shiro的用户登录和权限管理

shiro能做什么?

登录验证:
 不是登录用户不能访问敏感资源,只有登录了才可以访问敏感资源
权限验证:
 不同的用户账号登录成功之后,用户所使用的功能不同

类似的安全框架:
 1.spring security 功能完善,学习成本偏高
 2.shiro 学习成本低,简单的安全框架,基本功能存在(登录认证,权限认证)
 3.spring mvc interceptor(拦截器) 只能做登录认证,不能做权限认证

一、shiro的jar包依赖

在pom.xml文件中配置:

        <!-- Apache Shiro 权限依赖 -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-all</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- spring aop 依赖 -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>4.3.7.RELEASE</version>
        </dependency>

        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.8.7</version>
        </dependency>

二、shiro的配置文件

配置文件关系注入图如下:

web.xml文件配置:

创建spring_shiro.xml文件并配置信息交给将shiro配件的bean交给spring容器管理:

三、shiro的原理图

shiro的登录认证:
 用户登录成功就可以访问敏感资源
 之后的所有访问都通过shiro直接访问指定的资源
 用户没有登录成功,跳转到指定的登录页面

//环绕通知,可以控制目标方法的执行
 public Object around(ProceedJoinPoint pjp){
     try{
         if(登录过){
         returnValue=pjp.proceed();
         }else{
      //由shiro控制跳转到指定的页面,由spring_shiro.xml提供跳转的目的地
         }
     }
     Object returnValue=null; 
 }

注意:没有shiro,项目的功能照样跑起来,添加shiro实际就是横切,把shiro横切到项目中, 实际就是代理模式!!!

 shiro的权限认证:
 一定是在登录认证完成后,才能做shiro的权限认证,根据用户的权限显示不同

四、shiro的功能模块图

shiro的功能列表:

主要的功能:
Authentication:登录认证
authorrization:权限认证
session management:用shiro管理会话对象
cryptography:加密处理

辅助功能:
 web support:shiro可以用在web项目中
 caching:缓存 用shiro做缓存管理
 concurrency:支持高并发
 Testing:用shiro测试
 runas :shiro可以应用java项目
 remember me:记住我

shiro的使用步骤:
application code:用户的代码,代表的一个shiro的启动入口,用shiro的api来启动shiro可以理解成把用户的数据用shiro的api传递给shiro,由shiro来处理用户数据

 subject:原义是主题,每一个subject代表一个用户,抽象的用户,就是用shiro对用户的数据
 进行封装,把数据封装给token(令牌),最终可以狭义理解成是数据的封装
securitymanager:安全管理中心是shiro的核心,所有的数据都要经过shiro的安全管理中心来管理
realm:英文原义是域或范围,可以理解成原始数据的源头,源头域,

五、策略模型图

六、实际应用

shiro项目的搭建步骤:
1.创建项目
2.导入jar
 a.手动导入
 b.maven导入
3.把shiro的对象,交给spring容器来管理
 web.xml
 添加一个shiro的过滤器,要用这个过滤器过滤所有url
 spring_shiro.xml
 配置shiro的安全管理中心的对象,还有shiro的过滤器对象,
 还有登录和权限认证的接口的实现对象
4.创建java类,要给相应的接口给实现类
 创建java类AuthRealm extends AuthorizingRealm
 AuthorizingRealm实现自
 implements org.apache.shiro.authz.Authorizer, org.apache.shiro.util.Initializable, 
org.apache.shiro.authz.permission.PermissionResolverAware, org.apache.shiro.authz.permission.RolePermissionResolverAware 
5.跑项目

猜你喜欢

转载自blog.csdn.net/weixin_43184636/article/details/84990095