shiro的授權

完整代碼如下:

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.SimpleAccountRealm;
import org.apache.shiro.subject.Subject;
import org.junit.Before;
import org.junit.Test;

public class shiroTest {
    //創建relam(simplerelam)
    SimpleAccountRealm sar=new SimpleAccountRealm();
    @Before
    public void addUser(){
        //模擬數據庫的數據
        sar.addAccount("Salong","123456","admin");
}
    @Test
    public void test(){
        //構建secuityManage環境,創建對象
        DefaultSecurityManager dsm= new DefaultSecurityManager();
        //將relam加入到securityManage環境中
        dsm.setRealm(sar);
        //主體提交認證請求
        SecurityUtils.setSecurityManager(dsm);
        Subject sub=SecurityUtils.getSubject();
        //獲取賬號和密碼(模擬數據)
        UsernamePasswordToken token=new UsernamePasswordToken("Salong","123456");
        //認證
        sub.login(token);//認證
        System.out.println("是否認證:"+sub.isAuthenticated());//true
        sub.checkRole("admin");//void類型,判斷該用戶是否有admin這個角色,沒這個角色會報異常
        //退出認證
        sub.logout();
        System.out.println("是否認證:"+sub.isAuthenticated());//false
        sub.checkRole("admin");//這行會報異常,判斷用戶是否擁有某個角色的前提是必須先認證,退出認證將會
        //導致查看用戶角色失效。
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章