菜鳥學習shiro之用配置檔案實現登入,身份和許可權驗證2
阿新 • • 發佈:2019-02-02
Maven的和第一篇,一樣直接去複製使用
這篇部落格和上一篇沒有多大的區別,區別之處就是上一篇沒有實現許可權認證,將在這一篇中實現,這裡我們使用四郎給我們提供的內建類IniRealm,來實現登入,身份和許可權驗證,值得注意的是,IniRealm這個是引入的配置檔案的形式來管理資料庫中的資料的
直接上程式碼吧:
import antlr.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.realm.text.IniRealm; import org.apache.shiro.subject.Subject; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class IniRealmTest { @Test public void testAuthenticationTest() { // 這個是內建的realm類 IniRealm iniRealm = new IniRealm("classpath:user.ini"); // 1.構建SecurityManager環境 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); defaultSecurityManager.setRealm(iniRealm); // 2.主體提交認證請求 SecurityUtils.setSecurityManager(defaultSecurityManager); Subject subject = SecurityUtils.getSubject(); // 這個是需要認證的資訊 UsernamePasswordToken token = new UsernamePasswordToken("Mark","123456"); subject.login(token); System.out.println("isAuthenticated="+subject.isAuthenticated()); //subject.logout(); System.out.println("isAuthenticated="+subject.isAuthenticated()); subject.checkRole("admin"); subject.checkPermissions("user:delete","user:update"); } } user.ini的配置檔案如下
[users]
Mark=123456,admin
[roles]
admin=user:delete,user:update
其實總體思路上還是:
1.構建安全管理器的環境,然後
2.就類比如一個伺服器端,境界為資料庫中的使用者的資訊,把域資料庫的使用者資訊載入到安全管理器環境中去
3.統一把資訊部署到主題實現容器或者封裝物件的實現類(主題是安全管理器的實現類)中,
4.客戶端把要驗證的資訊在主題容器中進行比對,這時所有的結果都在學科的方法中檢視。