Shiro权限管理笔记

一.用户身份认证

身份认证,就是判断一个用户是否为合法用户的处理过程。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。对于采用指纹等系统,则出示指纹;对于硬件Key等刷卡系统,则需要刷卡。

  • 用户名密码身份认证流程


    Shiro权限管理笔记_第1张图片
  • Subject:主体
    访问系统的用户,主体可以是用户、程序等,进行认证的都称为主体;

  • Principal:身份信息
    是主体(subject)进行身份认证的标识,标识必须具有唯一性,如用户名、手机号、邮箱地址等,一个主体可以有多个身份,但是必须有一个主身份(Primary Principal)。

  • credential:凭证信息
    是只有主体自己知道的安全信息,如密码、证书等。

二.授权

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

Shiro权限管理笔记_第2张图片
image.png

三配置步骤:

jar包的配置
shiro-web的jar
shiro-spring的jar
shiro-code的jar
备注:
shiro-all可以加载所有的shiro包

  • pom.xml

    org.apache.shiro
    shiro-core
    1.4.0


    org.apache.shiro
    shiro-spring
    1.4.0


    org.apache.shiro
    shiro-web
    1.4.0


  • web.xml
.........
      
      
        shiroFilter  
        org.springframework.web.filter.DelegatingFilterProxy  
        true  
          
            targetFilterLifecycle  
            true  
          
      
      
        shiroFilter  
        /*  
      
.........

  • shiro 过滤器
过滤器简称 对应的java类 权限
anon org.apache.shiro.web.filter.authc.AnonymousFilter 可以匿名访问
authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter 基于表单的拦截器;如“/**=authc”
authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter Basic HTTP身份验证拦截器
perms org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter 权限授权拦截器,验证用户是否拥有所有权限;
port org.apache.shiro.web.filter.authz.PortFilter 端口拦截器,主要属性:port(80):可以通过的端口
rest org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter rest风格拦截器,自动根据请求方法构建权限字符串
roles org.apache.shiro.web.filter.authz.RolesAuthorizationFilter 角色授权拦截器,验证用户是否拥有所有角色
ssl org.apache.shiro.web.filter.authz.SslFilter SSL拦截器,只有请求协议是https才能通过
user org.apache.shiro.web.filter.authc.UserFilter 用户拦截器,用户已经身份验证/记住我登录的
logout org.apache.shiro.web.filter.authc.LogoutFilter 退出拦截器,主要属性:redirectUrl:退出成功后重定向的地址(/)
  • anon:例子/admins/**=anon 没有参数,表示可以匿名使用。
  • authc:例如/admins/user/**=authc表示需要认证(登录)才能使用,FormAuthenticationFilter是表单认证,没有参数
  • perms:例子/admins/user/=perms[user:add:],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/=perms["user:add:,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。
  • user:例如/admins/user/**=user没有参数表示必须存在用户, 身份认证通过或通过记住我认证通过的可以访问,当登入操作时不做检查

  • spring-shiro.xml
  
  
  
      
          
          
          
          
          
          
          
         
          
          
              
                  
                /login=anon  
                /icon/**=anon  
                /js/**=anon  
                /logout=logout  
                  
                /** = authc  
              
          
      

    
        
    

    
    
        
        
        
        
    

    
    
    
    

    
    
        
        
    
    
    
    
        
    
    
    
        
        
        
    


  • spring-web.xml
.....

    
        
    

你可能感兴趣的:(Shiro权限管理笔记)