Apache Shiro

  • Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、受權、密碼學和會話管理。
  • 使用Shiro的易於理解的API,您能夠快速、輕鬆地得到任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。

Shiro 主要分爲來個部分就是認證和受權,mysql

  • 在我的感受來看就是查詢數據庫作相應的判斷而已,
  • Shiro只是一個框架而已,其中的內容須要本身的去構建,先後是本身的,中間是Shiro幫咱們去搭建和配置好的
  • 我的認爲須要看一下其中的一些源碼,更有幫助的深刻的去了解Shiro的原理。

Shiro有三大核心組件:sql

Subject:即當前用戶數據庫

  • 在權限管理的應用程序裏每每須要知道誰可以操做什麼,誰擁有操做該程序的權利,shiro中則須要經過Subject來提供基礎的當前用戶信息
  • 全部的Subject都要綁定到SecurityManager上,與Subject的交互其實是被轉換爲與SecurityManager的交互。

SecurityManager:即全部Subject的管理者安全

  • 這是Shiro框架的核心組件,能夠把他看作是一個Shiro框架的全局管理組件,用於調度各類Shiro框架的服務。
  • 做用相似於SpringMVC中的DispatcherServlet,用於攔截全部請求並進行處理。

Realm:Realm是用戶的信息認證器和用戶的權限人證器網絡

  • 咱們須要本身來實現Realm來自定義的管理咱們本身系統內部的權限規則。
  • SecurityManager要驗證用戶,須要從Realm中獲取用戶。
  • 能夠把Realm看作是數據源。

編寫shiro配置文件

  • 在resources目錄下編寫shiro配置文件,shiro.ini

Shiro+MySQL動態權限驗證

  • 在resources文件夾下建立配置文件shiro-mysql.ini:

  • 注意sql語句,每次只查詢一個shiro要求查詢的字段,若是寫select *就會報錯了。
    • ini配置文件要求必須是key=value的形式,
    • 若是有些人沒有設置數據庫的密碼,就不要寫對應的配置。
    • 只寫」dataSource.password=」等號右面沒有值會報錯。

 

其權限過濾器及配置釋義:框架

  • anon:
    • 例子/admins/**=anon 沒有參數,表示能夠匿名使用。
  • authc:
    • 例如/admins/user/**=authc表示須要認證(登陸)才能使用,沒有參數
  • roles(角色):
    • 例子/admins/user/**=roles[admin],參數能夠寫多個,參數之間用逗號分割,當有多個參數時,例如admins/user/**=roles["admin,guest"],每一個參數經過纔算經過,至關於hasAllRoles()方法。
  • perms(權限):
    • 例子/admins/user/**=perms[add],參數能夠寫多個,例如/admins/user/**=perms["add, modify"],當有多個參數時必須每一個參數都經過才經過,想當於isPermitedAll()方法。
  • rest:
    • 例子/admins/user/**=rest[user],根據請求的方法,至關於/admins/user/**=perms[user:method] ,其中method爲post,get,delete等。
  • port:
    • 例子/admins/user/**=port[8081],當請求的url的端口不是8081是跳轉到schemal://serverName:8081?queryString,其中schmal是協議http或https等,serverName是你訪問的host,8081是url配置裏port的端口,queryString是你訪問的url裏的問號(?)後面的參數。
  • authcBasic:
    • 例如/admins/user/**=authcBasic沒有參數.表示httpBasic認證
  • ssl:
    • 例子/admins/user/**=ssl沒有參數,表示安全的url請求,協議爲https
  • user:
    • 例如/admins/user/**=user沒有參數表示必須存在用戶,當登入操做時不作檢查  
相關文章
相關標籤/搜索