1. 程式人生 > >菜鳥學習shiro之用配置檔案實現登入,身份和許可權驗證2

菜鳥學習shiro之用配置檔案實現登入,身份和許可權驗證2

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