【Apache Shiro】學習筆記一

Apache Shiro 是什麼?html

    Apache Shiro 是一個框架,可用於身份驗證和受權web

 

Apache Shiro 特性算法

    

    a. 身份認證數據庫

    b.訪問權限控制(用戶與角色的關係;用戶與操做的關係)apache

    c.能夠在任何場合使用會話管理緩存

    d.支持SSO微信

    e.支持記住密碼(支持跨會話的記住身份信息)框架

    f.緩存主要用來進行身份認證和權限控制加密

Shiro 的正常服務能夠單獨被部署,不必定必須依賴特定環境。除了單獨部署使用,也能夠與大多數框架融合使用。spa

 

關鍵詞釋義

    Authentication:認證,也就是驗證用戶的身份,就是肯定你是否是你,好比經過用戶名、密碼的方式驗證,或者某些第三方認證,好比微信認證。

    Authorization:受權,也叫訪問控制,也就是看你是否有權限作什麼事情,好比是否有權限看某個文件,或者是否有權限作後臺管理;

    Cipher:加密方式,這裏主要有幾種經常使用的加密方式,好比分組密碼(Block Ciphers)、流密碼(Stream Ciphers)、對稱加密(Symmetric Ciphers)、非對稱加密(Asymmetric Ciphers)

    Credential:證書,好比密碼、指紋或者網銀的Key都算是證書的一種。系統經過將用戶提供的證書和系統存儲的證書比較,若是一致就認爲用戶的身份是對的;

    Hash:哈希,一種單相的數據加密算法;

    Persmission:權限,用於描述系統的某項基礎功能,好比 「打開一個文件」,「查看’/user/list/’頁面」,「打印文檔」,這些都算是一種權限;

    Principal:身份,就是一種用於標識用戶身份的一種屬性,好比郵箱、電話號碼、用戶名、微信號等;

    Realm:這是一個用於訪問應用程序的用戶、角色、權限的組件,能夠把它看作是Shiro的DAO(Data Access Object),用於把各類存儲介質(好比關係數據庫、LDAP、文件)內的用戶權限數據轉換爲Shiro可以理解的格式。

    Role:角色,在Shiro中,角色就是權限的組合;

    Session:會話,也就是用戶登陸以後的上下文,在用戶登出以前能夠不用傳遞用戶名、密碼就能夠作各類操做;

    Subject:起始就是user,可是在Shiro中把它叫作Subject,由於和咱們系統交互的不必定是人,也多是其餘的系統。

 

重要操做:

    獲取當前用戶

Subject user= SecurityUtils.getSubject();

 

    驗證登陸

UsernamePasswordToken token = new UsernamePasswordToken(username, password);
Subject subject = SecurityUtils.getSubject();
try {
    subject.login(token);
    return R.ok();
} catch (AuthenticationException e) {
    return R.error("用戶或密碼錯誤");
}

擁有某個角色

currentUser.hasRole(RoleName)

擁有某個權限

currentUser.isPermitted("order:add")

用戶是否有權限訪問某種類型數據的某個具體實例

currentUser.isPermitted("order:get:order2")

幾個簡單的操做基本能夠知足認證和權限兩部分的平常操做

參考 : http://www.cnblogs.com/strinkbug/p/6117353.html

參考:  https://www.ibm.com/developerworks/cn/web/wa-apacheshiro/index.html

參考:  https://www.infoq.com/articles/apache-shiro