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

去哪儿网站排名怎么做crm系统网站

去哪儿网站排名怎么做,crm系统网站,辽宁建设工程信息网专家名单,蓝鸟E4A做网站程序一般在web系统权限设计中,一般分为三个维度,用户,角色,资源,一个用户可以拥有多个角色,比如说可以是老师,也可以是班主任,一个角色也可以拥有多个资源。 比如老师同时拥有查看班级学…

一般在web系统权限设计中,一般分为三个维度,用户,角色,资源,一个用户可以拥有多个角色,比如说可以是老师,也可以是班主任,一个角色也可以拥有多个资源。

比如老师同时拥有查看班级学生和批改作业的资源,如果一个用户有老师这个角色,那么就代表他拥有了查看班级学生和批改作业的两个资源权限。

因为只判断角色颗粒度太粗,而根据资源权限则比较细。

 

校验权限代码

在classpath下新建shiro-role.ini文件,内容如下:

代表有一个zhang的用户,拥有role1角色(如果有多个角色,后面用逗号继续隔开role1,role2)

role1这个角色有两个资源,分别是user:create和user:update。

[users]
zhang=123456,role1
[roles]
role1=user:create,user:update

测试代码:

        Factory<SecurityManager> factory =new IniSecurityManagerFactory("classpath:shiro-role.ini");//得到安全管理器SecurityManager securityManager = factory.getInstance();//将securityManager托管给SecurityUtils
        SecurityUtils.setSecurityManager(securityManager);Subject subject = SecurityUtils.getSubject();UsernamePasswordToken token = new UsernamePasswordToken("zhang", "123456");try {subject.login(token);} catch (AuthenticationException e) {e.printStackTrace();}//是否已经认证
        System.out.println(subject.isAuthenticated());//校验是否有对应的权限和资源,如果没有则抛出对应的异常UnauthorizedExceptionsubject.checkRole("role1");subject.checkPermission("user:create");//退出subject.logout();

过程没有遇到任何错误,执行到了最后,但是如果你check一个zhang不存在的role或者permission,则会报UnauthorizedException。

 

身份和凭证

在登陆中,用户需要提供principals(身份)和credentials(证明/凭证)提供给shiro来进行认证和授权。

principals可以有多个身份,但是只能有一个Primary principals,一般是登录账号,比如手机号。

credentials一般是密码。

在UsernamePasswordToken的账户密码就对应着身份和凭证。

 

 

subject.login()原理

当执行subject.login的时候,实际调用的是securityManager所属的Authenticator(默认是ModularRealmAuthenticator)的doAuthenticate方法进行验证。

 

 他会根据当前设置了几个realm走不同的方法(后面介绍多个realms)

 最终走的realm对应的getAuthenticationInfo方法,判断用户账号密码是否正确,如果错误则抛出对应的异常。正确则返回一个AuthenticationInfo对象。(这里是SimpleAuthenticationInfo)

 所以后面我们自定义realms的时候就覆盖getAuthenticationInfo这个方法即可。

 

subject.checkRole原理

当用户调用subject.checkRole("role1")判断用户是否有对应的角色的时候,底层还是走的SecurityManager所属的Authorizer的checkRole方法。

hasRole然后又走了下面的方法

最后获取到了所有的realms,上篇文章说了java环境下使用了IniRealm,并且注入到了Authenticator(认证器)和Authorizer(授权器)的一个成员变量中。

所以getRealms就可以直接获取到所有的realms

因为IniRealms继承了AuthorizingRealm,而IniRealm没有实现hasRole方法,所以会走他的继承类AuthorizingRealm里面的hasRole来判断是否有权限。下面就是对应的方法。

在初始化IniRealm的时候会读取所有用户所属的role和permission并封装到成员变量中,getAuthorizationInfo方法就是返回了一个AuthorizationInfo对象里面获取了zhang所属role和permission。

所以我们自定义realm进行授权的时候就是覆盖了realm的getAuthorizationInfo方法,里面封装的role和permission都是从数据库查询出来的。

 

最后进行checkRole就很容易看懂了。

 

如果返回false,则Authorizer会抛出UnauthorizedException授权失败异常。

 

github地址

https://github.com/cmniefei/shiroparent

 

转载于:https://www.cnblogs.com/nfcm/p/9875657.html

http://www.lbrq.cn/news/2446561.html

相关文章:

  • 做旅游攻略去什么网站网络平台运营是做什么的
  • 网站制作 搜索怎样在百度上发帖子
  • 代驾软件系统多少钱一套成都关键词优化排名
  • 郴州网站制作电子商务与网络营销教案
  • 网站 建设可行性报告军事最新消息
  • 做网站书面报告申请推广方案怎么写模板
  • 网站模板开发网络营销就是seo正确吗
  • 个人网站 如何备案网络营销策划包括哪些内容
  • 网站排名优化效果自己做网站
  • 多城市网站建设西安网站排名优化培训
  • axure做网站原型模板竞价托管
  • 海口网站制作案例网站系统开发
  • 电子商务网站建设自服务器每日新闻简报
  • 柳州做网站有kv产品推广方法有哪些
  • 做的比较好的旅游网站qq群推广平台
  • 建独立网站杭州优化seo公司
  • 宝安附近公司做网站建设多少钱创建网站平台
  • 用jsp做的购物网站互联网推广销售是做什么的
  • 电商网站开发报价单青岛网站推广关键词
  • 做设计接私活的网站电子商务seo是什么意思
  • 电话开发网站建设话术cps推广平台有哪些
  • 罗村网站建设快速排名优化seo
  • 电子商务网站建设的步骤一般为(国外免费建站网站搭建
  • 网站目标人群企业网站推广技巧
  • 免费b2b网站大全黄页88恶意点击软件有哪些
  • SFDA的网站建设网站优化排名方法
  • 南充市房产信息网官网seo怎么做推广
  • 有哪些网站可以免费看电影河南自助建站seo公司
  • 天元建设集团有限公司青岛迈步者seo
  • 网站建设招标公告网页制作代码html制作一个网页
  • Python编程:初入Python魔法世界
  • MySQL 8.0 OCP 1Z0-908 题目解析(37)
  • Windows Server系统安装JDK,一直卡在“应用程序正在为首次使用作准备,请稍候”
  • NodeJS搭建SSE接口服务
  • docker安装 Elasticsearch、Kibana、IK 分词器
  • 双紫擒龙紫紫红黄安装使用攻略,2025通达信指标源码,擒龙追踪源码公式学习