当前位置: 首页 > news >正文

旅游网站做模板素材/营销软文范例大全100

旅游网站做模板素材,营销软文范例大全100,饭店的网站建设进行评价,海南省住房与城乡建设厅网站Shiro架构体系Shiro是Apache的一个开源的安全框架,是一个的权限管理,实现用户认证,用户授权、会话管理、web集成。缓存模块的轻量级安全框架。Shiro的分为四个体系构成applicationCode(应用程序代码)Subject&#xff0…
  • Shiro架构体系
  • Shiro是Apache的一个开源的安全框架,是一个的权限管理,实现用户认证,用户授权、会话管理、web集成。缓存模块的轻量级安全框架。
      • Shiro的分为四个体系构成
      • applicationCode(应用程序代码)
      • Subject():主题结构
      • ShiroSecurityManager(Shrio安全管理器):主要的API
      • Reaim(域的意思):是在整个 Shiro框架的安全数据源
  • 运行流程原理
      • 首先将需要将需要进行安全验证的应用程序代码交给Shiro的Subject主体进行管理认证授权,Subject将授权的认证委托给ShiroSecurityManager管理器,管理器从Reaim中取出相关的授权数据完成整个认证和授权的操作

63b45fa5b32ac7ccfa1f7a7cd6b67323.png

认证的流程:

用户认证,用户去访问系统,系统要验证用户身份的合法性。

最常用的用户身份验证的方法:

1、用户名密码方式。

2、指纹打卡机。

3、基于证书验证方法。

系统验证用户身份合法,用户方可访问系统的资源。

d66f513a5802238a0a9bcb42b38fd7f4.png

授权的流程:

授权,即访问控制,控制谁能访问哪些资源。主体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访问的。

权限的赋予分为角色赋予和权限赋予

dc03b10ab776367a5eb1730c2b254749.png

Shiro架构

30822ba14f5ae84be8d26209be98de64.png
  • Subject

subject:主体,与应用交互的用户,主体要访问系统,系统需要对主体进行认证、授权。subject主题包含任何和程序交互的抽象概念都为主体

  • SecurityManager(安全)

securityManager:安全管理器,主体进行认证和授权都 是通过securityManager进行。

  • Authenticator(认证)

Authenticator即认证器,主体进行认证最终通过authenticator进行的。

  • Authorizer(授权)['ɔːθəraɪz]

Authorizer即授权器,主体进行授权最终通过authorizer进行的。

  • sessionManager(会话管理)

sessionManager即会话管理,如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个组件就是SessionManager;shiro框架定义了一套会话管理,它不依赖web容器的session,所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。

  • SessionDAO(操作session的一套接口)

SessionDAO即会话dao,DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;

  • CacheManager(缓存)

缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能

  • realm(数据源)

Realm即领域,相当于datasource数据源,可以是JDBC实现,也可以是LDAP实现,或者内存实现等等,securityManager进行安全认证需要通过Realm获取用户权限数据,比如:如果用户身份数据在数据库那么realm就需要从数据库获取用户身份信息。

注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;

  • Cryptography(加密) [krɪp'tɑːɡrəfi]

Cryptography即密码管理,shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能。


  • Shiro jar包

69d1b4bf250b0518a460d57ba00cd993.png
  • Shiro.ini文件编写的要求
  • Shiro配置文件
      • 一般放在classpath下由Shiro自动读取
      • 存储的格式为Kay/Value键值对的配置
      • INI配置文件适用于少量用户且不需要在运行时动态创建的情境下使用
      • INT,文件配置Shiro分为四个模块部分
          • 1.main:主体
          • main主体配置Shrio的对象如:SecurityManager、Realm、authenticator、authcStrategy(授权策略)
          • 2.Users:用户模块
          • 允许配置一组静态的用户,包含用户名、密码、角色、,一个用户可以有多个角色,角色之前使用逗号分割
          • 3.roles: 角色模块
          • 将角色和的权限关联起来,格式为:角色名=权限字符串1,权限字符串2...
          • role角色
          • printer资源
          • create操作
          • user:create:表示可以对用户这个的资源进行创建的操作等同于user:create:*
          • 表示可以用户资源下的所有实例进行创建操作
          • user:create:01:表示对用户资源下的01实例有创建的操作
          • user:*:01:表示对用户资源下的01实例有全部的操作
      • 语法格式:资源:操作:实例
   role=printer:create,printer:query
  • 实现简单的认证(jdbcRealm:jdbcRealm来源认证)
  • Shiro.ini文件
[main]
#数据源的配置
jdbcRealm=org.apache.shiro.realm.jdbc.JdbcRealm
#配置数据源
dataSource = com.mchange.v2.c3p0.ComboPooledDataSource
dataSource.driverClass = com.mysql.jdbc.Driver
dataSource.jdbcUrl = jdbc:mysql:///test
dataSource.user = root
dataSource.password = 159302#将创建好的数据源注入jdbc.Realm
jdbcRealm.dataSource = $dataSource#将jdbcRealm注入给SecurityManager
securityManager.realm = $jdbcRealm
  • 测试类
	@Testpublic void test1() {//1.构建访问路径 文件读取@SuppressWarnings("deprecation")IniSecurityManagerFactory securityManagerFactory = new IniSecurityManagerFactory("classpath:shiro_hellor.ini");//2.构建securityManager的实例对象SecurityManager sm = securityManagerFactory.getInstance();//3.设置SecurityManager到运行环境中SecurityUtils.setSecurityManager(sm);//4.获取主体对象SubjectSubject subject = SecurityUtils.getSubject();//5.创建用户的令牌UsernamePasswordToken token = new UsernamePasswordToken("root", "123456");//6.使用subject进行身份的校验subject.login(token);//判断是否被认证通过true为通过不通过抛出异常System.out.println(subject.isAuthenticated());
}
  • 实现认证和授权
    • 继承AuthenticatingRealm类(该类不带授权的功能,老版本存在bug任何的认证都能通过)建议使用AuthorizingRealm实现自定义认证
    • 重写内部的方法
    • 参数接收一个AuthenticationToken令牌
    • 方法返回一个认证信息一般使用子类AuthenticationInfo进行参数的返回使用实现类
    • SimpleAuthenticationInfo进行认证的返回
    • 使用构造方法接收三个的参数
      • 1.用户名
      • 2.凭证
      • 3.自定义的Realm名称
      • 认证:
public class CustomRealm  extends AuthenticatingRealm{@Overrideprotected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken arg0) throws AuthenticationException {//自定义的realm的认证数据需要从数据查询在这里为了方便将数据连接的省略//将数据写死SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo("root","123456", "custRealm");return simpleAuthenticationInfo;}}
  • 授权
	/*** 授权方法*/@Overrideprotected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();		//角色授权是在数据库查询而出的简化操作写死//角色授权返回数据库查询到的角色进行返回info.addRole("管理员");//权限赋值info.addStringPermission("菜单");return info;}
  • 核心文件的配置
[main]
#设置自定义的认证器
custRealm = com.sxt.customrealm.CustomRealm
#设置凭证匹配器
credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher#设置加密的属性
credentialsMatcher.hashIterations=2
credentialsMatcher.hashAlgorithmName = MD5
#配置realm的凭证属性
custRealm.credentialsMatcher=$credentialsMatcher#配置自定义realm
securityManager.realm = $custRealm
  • 认证和授权的执行流程
  • 创建IniSecurityManagerFactroy工厂读取核心文件(高版本已经过时)
  • 通过工厂对象获取SecurityManager对象
  • 使用SecurityUtils的setSecurityManager()防方法将SecurityManager对象添加到运行环境中
  • 通过SecurityUtils获取Subject对象
  • 创建UsernamePasswordToken令牌将用户认证进行封装
  • 使用Subject的login()方法提交认证,该方法会调用自定义凭证匹配器内的doGetAuthenticationInfo()方法进行凭证的验证并且将凭证的信息返回
  • 调用subject.hashRole(Stirng role)(基于角色的权限赋予):查看又没有指定的角色会调用自定义凭证匹配器的doGetAuthorizationInfo()方法进行信息的返回
  • isPermitted(String permitted ) :基于权限的权限赋予查看有无指定的权限
http://www.jmfq.cn/news/5220595.html

相关文章:

  • 如何对网站的图片做cdn/制造业中小微企业
  • 网站正在建设中 模板 下载/windows优化大师有什么功能
  • 如何做电子书网站/外链网站大全
  • 网站开发 合作协议/网站策划
  • 网站栏目建设调研/百度怎么做广告推广
  • 电脑端网站和手机网站区别/今日新闻头条新闻
  • 建设部住房城乡建设厅网站/关键词分布中对seo有危害的
  • 湖南做网站磐石网络案例/企业培训考试
  • 网页搜索功能怎么实现/网站推广seo招聘
  • 网站设计技术有哪些/深圳网络营销平台
  • 医社保增减员在什么网站做/免费b站推广
  • 做设计必知网站/小程序开发平台官网
  • html后台网站模板/产品关键词
  • 用表格做网站教程/app开发者需要更新此app
  • 网站建设责任分工/网址导航怎样推广
  • 朋友圈网站广告怎么做/网络推广的方法有多选题
  • 绛县做网站/搜索引擎优化规则
  • 百度贴吧有没有做网站的人/昆明seo排名外包
  • 小企业如何优化网站建设/天津seo培训机构
  • 网站建设公司位置/网页制作软件
  • php网站欣赏/seo网站优化价格
  • 宁夏网站建设优化/seo培训优化
  • 企业网站制作规划/关键词优化排名详细步骤
  • 云虚拟主机做视频网站/seo快速排名系统
  • 哪个网站做二手车买卖/最新小组排名
  • dw做网站怎么写弹出客服邮箱/企业网搭建
  • 电视盒子做网站服务器/中国最新军事新闻最新消息
  • 龙口做网站es158/赣州网站建设
  • ps切图做网站/网站增加外链的方法有哪些
  • qq音乐如何做mp3下载网站/长春模板建站代理