1. 程式人生 > >8.11.15 下午 第80天上課

8.11.15 下午 第80天上課

 

 

總結

shiro : 一個主流的許可權管理框架 Apache
shiro :
    認證:Authenticator 認證器 
        主體:subject 登入者
        建立一個SimpleAuthenticationInfo物件 存放 使用者名稱 資料庫密碼 鹽 
    授權:
        一個是角色 role 
        一個是許可權 permission 
        從資料庫中取出使用者對應的 角色許可權資訊 存放到
        SimpleAuthorizationInfo 物件中 
    加密原則
        使用md5加密方式進行對密碼加密 加密不可逆 比對方式 將使用者輸入的密碼加鹽加密在和資料庫中加密後的密碼進行對比
    會話管理
        sessionManager
    快取管理
        cacheManager

驗證碼:需要繼承FormAuthenticationFilter重寫方法中實現在 認證之前判斷驗證碼是否正確
記住我:cookieManager 把使用者名稱和密碼存放在cookie中 下次登入判斷cookie中是否存在,如果已經存在則直接發給後臺進行登入

過濾器配置:
authc: 必須認證
anon: 匿名訪問
user: 認證過
logout: 退出登入
jsp:shiro標籤
<shiro:authenticated/>    登入之後
<shiro:notAuthenticated/>    不在登入狀態時
<shiro:guest/>    使用者在沒有RememberMe時
<shiro:user/>    使用者在RememberMe時
<shiro:hasAnyRoles name="abc,123"/ >    在有abc或者123角色時
<shiro:hasRole name="abc"/>    擁有角色abc
<shiro:lacksRole name="abc"/>    沒有角色abc
<shiro:hasPermission name="abc"/>    擁有許可權資源abc
<shiro:lacksPermission name="abc"/>    沒有abc許可權資源
<shiro:principal/>    顯示使用者身份名稱
<shiro:principal property="username"/>   顯示使用者身份中的屬性
controller 中的shiro註解
    @RequiresAuthentication
  表示當前Subject已經通過login 進行了身份驗證;即Subject. isAuthenticated()返回true。
 
  @RequiresUser
  表示當前Subject已經身份驗證或者通過記住我登入的。
 
  @RequiresGuest
  表示當前Subject沒有身份驗證或通過記住我登入過,即是遊客身份。
 
  @RequiresRoles(value={“admin”, “user”}, logical= Logical.AND)
  @RequiresRoles(value={“admin”})
  @RequiresRoles({“admin“})
  表示當前Subject需要角色admin 和user。
 
  @RequiresPermissions (value={“user:a”, “user:b”}, logical= Logical.OR)
  表示當前Subject需要許可權user:a或user:b。