(1)使用用戶的登錄信息創(chuàng)建令牌
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token可以理解為用戶令牌,登錄的過程被抽象為Shiro驗(yàn)證令牌是否具有合法身份以及相關(guān)權(quán)限。
(2)執(zhí)行登陸動作
SecurityUtils.setSecurityManager(securityManager); // 注入SecurityManager Subject subject = SecurityUtils.getSubject(); // 獲取Subject單例對象 subject.login(token); // 登陸
Shiro的核心部分是SecurityManager,它負(fù)責(zé)安全認(rèn)證與授權(quán)。Shiro本身已經(jīng)實(shí)現(xiàn)了所有的細(xì)節(jié),用戶可以完全把它當(dāng)做一個黑盒來使用。SecurityUtils對象,本質(zhì)上就是一個工廠類似Spring中的ApplicationContext。Subject可以為user?線程等。它是你目前所設(shè)計的需要通過Shiro保護(hù)的項目的一個抽象概念。通過令牌(token)與項目(subject)的登陸(login)關(guān)系,Shiro保證了項目整體的安全。
(3)判斷用戶
Shiro本身無法知道所持有令牌的用戶是否合法,除了實(shí)現(xiàn)人員沒有人知道。因此Realm我們自行實(shí)現(xiàn)的模塊。
(4)權(quán)限校驗(yàn)
AuthenticationInfo代表了用戶的角色信息集合,AuthorizationInfo代表了角色的權(quán)限信息集合這個根據(jù)項目講解