Shiro(三) 权限管理 假数据
角色本质上就是一组权限的集合 起了一个别名。
1.默认不支持连接数据库 第一个demo还使用假数据
ini配置文件信息,模拟数据
[users]
zhangsan=123456,admin
lisi=123456,admin
lilei=123456,admin
hanmm=123456,superadmin
[roles]
admin=user:select,guru:select
superadmin=user:*,guru:*
public void test3(){
/**
* 认证流程
*
* 1.读取配置文件
*/
IniSecurityManagerFactory factory = new IniSecurityManagerFactory("classpath:datasources.ini");
SecurityManager securityManager = factory.getInstance();
/**
* 2.将安全管理器 赋值 工具类
*/
SecurityUtils.setSecurityManager(securityManager);
/**
* 3.获取页面输入的账号密码 封装为token
*/
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
/**
* 4.获取Subject
*/
Subject subject = SecurityUtils.getSubject();
/**
* 5.登录
*/
try {
subject.login(token);
System.out.println("登录成功");
}catch (Exception e){
System.out.println("登录失败");
}
/**
* 判断是否登录成功 如果成功就可以查看用户有没有添加用户 和 删除用户 以及 查看用户的权限
*
* 查看用户 有没有 普通管理员的角色
*/
if(subject.isAuthenticated()){
/**
* 代码式授权 通过方法校验用户有没有某个权限
* 标签式
* 注解式
*/
/**
* 有没有查询用户权限
*/
boolean permitted = subject.isPermitted("user:select");
System.out.println(permitted);
/**
* 有没有 普通管理员的角色
*/
boolean admin = subject.isPermitted("admin");
System.out.println(admin);
}
}