時隔這麼久終於有時間更新了,今天和你們分享一下Shiro的原理。我認爲不管是Shiro也好,仍是其餘安全框架也好,其功能主要就分爲三部分:認證、受權、加密。下面咱們來詳細說明Shiro具體是如何實現的。
講原理固然離不開結構圖,咱們先來看一下Shiro的總體結構。java
由Shiro的結構圖咱們能夠看出Shiro的核心就是Security Manager。Shiro的認證、受權、Session管理,都須要由Security Manager負責。安全
下面咱們用一個小例子來了解一下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()); } }
doGetAuthenticationInfo
和doGetAuthorizationInfo
,這也是咱們整個權限管理的最重要的一部分,因爲這裏咱們只是一個入門程序,咱們就使用Shiro定義好的SimpleAccountRealm
做爲演示,後面咱們還會說到JdbcRealm和自定義Realm。SecurityUtils
設置securityManager和獲取subject;UsernamePasswordToken
來模擬獲取用戶從前臺登錄的帳號密碼。subject.login(token);
進行認證。若tonken中的帳號密碼和咱們addUser()
添加的相同則測試經過,不然則會拋出異常。Shiro認證咱們先說這麼多,下節咱們來講說Shiro的簡單受權。若是你們有好的意見和建議請在評論區留言,謝謝你們。測試