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");

最新文章

  1. 如何在腾讯开放平台的云服务器上安装php和memcache 一
  2. Jenkins安装
  3. MVC中的模型
  4. windows7 密码保护 共享文件
  5. 双人对战的球类游戏IOS源码
  6. Oracle----dual
  7. HTTP层 &mdash;&mdash; 请求
  8. 添加PATH
  9. mysql数据库管理备份运维常用命令
  10. myeclipse &#39;no default proposals&#39; when use &#39;alt + /&#39;.
  11. response.setHeader各种使用方法
  12. Logistic Regression:银行贷款申请审批实例
  13. Spark1.4从HDFS读取文件运行Java语言WordCounts
  14. 分布式服务跟踪及Spring Cloud的实现
  15. [CF893F] Subtree Minimum Query
  16. Django04-模板系统Template
  17. bug7 java.net.BindException: 端口被占用。
  18. Android Studio配置文件路径修改
  19. 会话(Session)与cookies
  20. SpringMVC(八) RequestMapping HiddenHttpMethodFilter

热门文章

  1. 10倍处理能力 阿里云推云上首个支持12层4K非编NAS产品
  2. Flash调用Alchemy编译的代码时出现Error #1506的解决
  3. 思维+模拟--POJ 1013 Counterfeit Dollar
  4. JDK 安装及配置环境变量(基于 Linux)
  5. Linux之进程管理工具supervisor
  6. Java——深入理解Java异常体系
  7. 201771010113 李婷华 《面向对象程序设计(Java)》第十一周总结
  8. 【HDU4991】树状数组
  9. 通过PAML中的CODEML模块计算dnds的过程以及踩坑
  10. 我们为什么推荐在Json中使用string表示Number属性值?