Shiro權限管理(二)——認證

Shiro Logo

時隔這麼久終於有時間更新了,今天和你們分享一下Shiro的原理。我認爲不管是Shiro也好,仍是其餘安全框架也好,其功能主要就分爲三部分:認證、受權、加密。下面咱們來詳細說明Shiro具體是如何實現的。

Shiro結構圖

講原理固然離不開結構圖,咱們先來看一下Shiro的總體結構。java

Shiro Theory

由Shiro的結構圖咱們能夠看出Shiro的核心就是Security Manager。Shiro的認證、受權、Session管理,都須要由Security Manager負責。安全

Shiro認證

下面咱們用一個小例子來了解一下Shiro 的簡單用法。框架

public class HelloShiro {
    SimpleAccountRealm realm = new SimpleAccountRealm();

    @Before
    public void addUser() {
        realm.addAccount("Mark", "123456");
    }

    @Test
    public void testSimlpeRealm() {

        // 1.構建securityManager環境
        DefaultSecurityManager securityManager = new DefaultSecurityManager();
        securityManager.setRealm(realm);
        // 2.主體提交認證請求
        SecurityUtils.setSecurityManager(securityManager);
        Subject subject = SecurityUtils.getSubject();
        AuthenticationToken token = new UsernamePasswordToken("Mark", "123456");
        // 3. 認證
        subject.login(token);
        System.out.println(subject.isAuthenticated());

    }
}
  1. 建立securityManager環境,咱們這裏使用的是DefaultSecurityManager。
  2. 設置Realm,Realm主要主要負責Subject的認證和受權。其中最重要的兩個方法是doGetAuthenticationInfodoGetAuthorizationInfo,這也是咱們整個權限管理的最重要的一部分,因爲這裏咱們只是一個入門程序,咱們就使用Shiro定義好的SimpleAccountRealm做爲演示,後面咱們還會說到JdbcRealm和自定義Realm。
  3. 經過SecurityUtils設置securityManager和獲取subject;
  4. 建立須要認證的token信息,這是咱們本身建立一個UsernamePasswordToken來模擬獲取用戶從前臺登錄的帳號密碼。
  5. 最後咱們使用subject.login(token);進行認證。若tonken中的帳號密碼和咱們addUser()添加的相同則測試經過,不然則會拋出異常。

Shiro認證咱們先說這麼多,下節咱們來講說Shiro的簡單受權。若是你們有好的意見和建議請在評論區留言,謝謝你們。測試

相關文章
相關標籤/搜索