Shiro Quickstart
来源:互联网 发布:进程调度算法代码 编辑:程序博客网 时间:2024/05/19 06:39
Quickstart.java
public class Quickstart { private static final transient Logger log = LoggerFactory.getLogger(Quickstart.class); public static void main(String[] args) { Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); // 获取当前的Subject Subject currentUser = SecurityUtils.getSubject(); // 测试使用Session // 获取Session Session session = currentUser.getSession(); session.setAttribute("someKey", "aValue"); String value = (String) session.getAttribute("someKey"); if (value.equals("aValue")) { log.info("---> Retrieved the correct value! [" + value + "]"); } // 测试当前的用户是否已经被认证,即是否已经登陆 // 调用Subject的isAuthenticated if (!currentUser.isAuthenticated()) { // 把用户名和密码封装为UsernamePasswordToken 对象 UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa"); token.setRememberMe(true); try { // 执行登陆 currentUser.login(token); } // 没有指定的账户,则Shiro会抛出 UnknownAccountException catch (UnknownAccountException uae) { log.info("----> There is no user with username of " + token.getPrincipal()); return; } // 账户存在,密码错误 ,则Shiro会抛出 IncorrectCredentialsException catch (IncorrectCredentialsException ice) { log.info("----> Password for account " + token.getPrincipal() + " was incorrect!"); return; } // 用户被锁定的异常 catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal() + " is locked. " + "Please contact your administrator to unlock it."); } catch (AuthenticationException ae) { } } log.info("----> User [" + currentUser.getPrincipal() + "] logged in successfully."); // 是否有某一个角色 if (currentUser.hasRole("schwartz")) { log.info("----> May the Schwartz be with you!"); } else { log.info("----> Hello, mere mortal."); return; } // 用户是否具备某一个行为 ,调用Subject的isPermitted方法 if (currentUser.isPermitted("lightsaber:weild")) { log.info("----> You may use a lightsaber ring. Use it wisely."); } else { log.info("Sorry, lightsaber rings are for schwartz masters only."); } if (currentUser.isPermitted("user:delete:zhangsan")) { log.info("----> You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'. " + "Here are the keys - have fun!"); } else { log.info("Sorry, you aren't allowed to drive the 'eagle5' winnebago!"); } System.out.println("---->" + currentUser.isAuthenticated()); // 执行登出 currentUser.logout(); System.out.println("---->" + currentUser.isAuthenticated()); System.exit(0); }}
0 0
- Shiro Quickstart
- 测试shiro的quickstart
- Shiro QuickStart使用shiro.ini静态数据源实现权限管理
- Quickstart
- 第一个Shiro(Quickstart)来自官网
- Hibernate QuickStart
- AutoCode quickstart
- SeoServer -------Quickstart
- Jease ::Quickstart
- Direct2D QuickStart
- Zabbix Quickstart
- Ceilometer Quickstart
- Moq Quickstart
- MVVM QuickStart
- Vagrant Quickstart
- SignalR QuickStart
- Quickstart containers
- angular2 quickstart
- 小鸦-拦截器和监听器,过滤器的区别
- [后缀自动机 模板题] SPOJ 8222 Substrings
- 对这一阶段C语言的总结
- 解决df -h 发现/目录100%的问题
- Openjudge NOI题库1.7编程基础之字符串 34:回文子串
- Shiro Quickstart
- 创建对象之原型模式
- 二叉树的镜像(二叉树的对称性)
- [最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺
- 《ES6 标准入门》读书笔记
- 欢迎使用CSDN-markdown编辑器
- C3P0,Dbutils4mysql分页
- J.U.C--locks--ReentrantLock
- 直线的旋转与相交,计算几何(Morley定理,uva 11178)