您的位置:首页 > 其它

Shiro安全框架05:使用ini形式进行授权

2019-06-10 14:54 106 查看

第一步:创建ini配置文件

文件中定义了用户名、密码、用户所拥有的角色、角色所拥有的权限

[code][users]
#用户itlike的密码是1234,此用户具有role1和role2两个角色
hello=123456,role1,role2
myxq=123456,role2

[roles]
#角色role1对资源user拥有create、update权限
role1=user:create,user:update
#角色role2对资源user拥有create、delete权限
role2=user:create,user:delete
#角色role3对资源user拥有create权限
role3=user:create,user:edit

第二步:再程序中进行授权

同样需要先进行认证,当授权成功收方可对用户进行授权

[code]public class App {
public static void main(String[] args) {
/**
* 1.构建securityManager工厂
* 2.通过工厂创建securityManager
* 3.将securityManager设置到运行环境中
* 4.创建一个Subject实例
* 5.创建token令牌
* 6.用户登录
* 7.用户退出
*
*
*/
// 1.构建securityManager工厂
IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:shiro-permission.ini");
//2.通过工厂创建securityManager
SecurityManager securityManager = factory.getInstance();
//3.将securityManager设置到运行环境中
SecurityUtils.setSecurityManager(securityManager);
//4.创建一个Subject实例
Subject subject = SecurityUtils.getSubject();
//5.创建token令牌
UsernamePasswordToken token = new UsernamePasswordToken("hello", "123456");

try {
//6.用户登录
subject.login(token);
} catch (UnknownAccountException e) {
System.out.println("账号不存在");
} catch (IncorrectCredentialsException e){
System.out.println("密码不正确");
}

System.out.println("认证是否成功"+subject.isAuthenticated());

/**
* 认证成功之后才可授权
*/
//判断当前用户是否拥有某个角色
System.out.println(subject.hasRole("role2"));
//判断当前用户是否拥有多个角色
System.out.println(subject.hasAllRoles(Arrays.asList("role1","role2")));

/*判断是否有某一个权限*/
System.out.println(subject.isPermitted("user:create"));
/*判断是否同时有多个权限*/
System.out.println(subject.isPermittedAll("user:create","user:update","user:edit"));

//7.用户退出
subject.logout();
System.out.println("认证是否成功"+subject.isAuthenticated());

}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: