subject.hasRole("") ;
subject.hasRoles(List);
subject.hasAllRoles();
subject.isPermitted("");
修改ini文件
#配置用户名
[users]
zhangsan=123456,role1
lisi=123456,role2
wanghu=123456,role3
zhaoliu=123456,role2,role3
sunqi=123456,role4
#声明角色
[roles]
role1=user:query,user:add,user:update,user:delete,user:export
role2=user:query,user:add
role3=user:query,user:export
role4=*:*
//日志输出工具
private static final transient Logger log = LoggerFactory.getLogger(TestAuthenticationApp.class);
public static void main(String\[\] args) {
String username = "zhangsan";
String password = "123456";
log.info("My First Apache Shiro Application");
//1 创建安全管理器的工厂对象
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
//2 使用工厂创建安全管理器
SecurityManager securityManager = factory.getInstance();
//3 把当前的安全管理器绑定到线程
SecurityUtils.setSecurityManager(securityManager);
//4 使用SecurityUtils.getSubject() 得到主体
Subject currentUser = SecurityUtils.getSubject();
//5 封装用户名
AuthenticationToken arg0 = new UsernamePasswordToken(username, password);
currentUser.login(arg0);
System.out.println("认证通过");
//退出的方法
//currentUser.logout();
//判断用户是否通过认证
boolean authent = currentUser.isAuthenticated();
System.out.println(authent);
//角色判断
boolean hasrole1 = currentUser.hasRole("role1");
System.out.println(hasrole1);
//分别判断集合里面的角色返回数组
List<String> arr = Arrays.asList("role1","role2","role3");
boolean\[\] arrs = currentUser.hasRoles(arr);
for (boolean string : arrs) {
System.out.println(string);
}
//判断当前用户是否有 arr集合里的所有角色
boolean hasAllRoles = currentUser.hasAllRoles(arr);
System.out.println(hasAllRoles);
//权限判断
boolean permitted = currentUser.isPermitted("user:query");
System.out.println("当前用户有当前权限吗"+permitted);
//分别判断
boolean\[\] permitted2 = currentUser.isPermitted("user:query","user:add");
//同时判断
boolean permitted3 = currentUser.isPermittedAll("user:query","user:add");
手机扫一扫
移动阅读更方便
你可能感兴趣的文章