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.用戶端把要驗證的資訊在主題容器中進行比對,這時所有的結果都在學科的方法中檢視。