apache shrio 入门示例
来源:互联网 发布:excel如何过滤重复数据 编辑:程序博客网 时间:2024/05/16 05:59
本示例为官网上提供的示例
maven依赖
<dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.1.0</version> </dependency> <!-- Shiro uses SLF4J for logging. We'll use the 'simple' binding in this example app. See http://www.slf4j.org for more info. --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.6.1</version> <scope>test</scope> </dependency> </dependencies>
shrio.ini权限配置文件
# =============================================================================# Tutorial INI configuration## Usernames/passwords are based on the classic Mel Brooks' film "Spaceballs" :)# =============================================================================# -----------------------------------------------------------------------------# Users and their (optional) assigned roles# username = password, role1, role2, ..., roleN# -----------------------------------------------------------------------------[users]root = secret, adminguest = guest, guestpresidentskroob = 12345, presidentdarkhelmet = ludicrousspeed, darklord, schwartzlonestarr = vespa, goodguy, schwartz# -----------------------------------------------------------------------------# Roles with assigned permissions# roleName = perm1, perm2, ..., permN# -----------------------------------------------------------------------------[roles]admin = *schwartz = lightsaber:*goodguy = winnebago:drive:eagle5
示例代码:
import org.apache.shiro.SecurityUtils;import org.apache.shiro.authc.*;import org.apache.shiro.config.IniSecurityManagerFactory;import org.apache.shiro.mgt.SecurityManager;import org.apache.shiro.session.Session;import org.apache.shiro.subject.Subject;import org.apache.shiro.util.Factory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Tutorial {private static final transient Logger log = LoggerFactory.getLogger(Tutorial.class); public static void main(String[] args) { log.info("My First Apache Shiro Application"); Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); SecurityManager securityManager = factory.getInstance(); SecurityUtils.setSecurityManager(securityManager); // get the currently executing user: Subject currentUser = SecurityUtils.getSubject(); // Do some stuff with a Session (no need for a web or EJB container!!!) 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 + "]"); } // let's login the current user so we can check against roles and permissions: if (!currentUser.isAuthenticated()) { UsernamePasswordToken token = new UsernamePasswordToken("lonestarr", "vespa"); token.setRememberMe(true); try { currentUser.login(token); } catch (UnknownAccountException uae) { log.info("There is no user with username of " + token.getPrincipal()); } catch (IncorrectCredentialsException ice) { log.info("Password for account " + token.getPrincipal() + " was incorrect!"); } catch (LockedAccountException lae) { log.info("The account for username " + token.getPrincipal() + " is locked. " + "Please contact your administrator to unlock it."); } // ... catch more exceptions here (maybe custom ones specific to your application? catch (AuthenticationException ae) { //unexpected condition? error? } } //say who they are: //print their identifying principal (in this case, a username): log.info("User [" + currentUser.getPrincipal() + "] logged in successfully."); //test a role: if (currentUser.hasRole("schwartz")) { log.info("May the Schwartz be with you!"); } else { log.info("Hello, mere mortal."); } //test a typed permission (not instance-level) 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."); } //a (very powerful) Instance Level permission: if (currentUser.isPermitted("winnebago:drive:eagle5")) { 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!"); } //all done - log out! currentUser.logout(); System.exit(0); } }
输出结果:
0 [main] INFO Tutorial - My First Apache Shiro Application246 [main] INFO org.apache.shiro.session.mgt.AbstractValidatingSessionManager - Enabling session validation scheduler...352 [main] INFO Tutorial - Retrieved the correct value! [aValue]355 [main] INFO Tutorial - User [lonestarr] logged in successfully.355 [main] INFO Tutorial - May the Schwartz be with you!356 [main] INFO Tutorial - You may use a lightsaber ring. Use it wisely.357 [main] INFO Tutorial - You are permitted to 'drive' the winnebago with license plate (id) 'eagle5'. Here are the keys - have fun!
推荐文章
0 0
- apache shrio 入门示例
- shrio入门
- shrio入门
- Apache Ant入门示例
- Shrio入门1:基础理论需求
- Apache Camel框架入门示例
- Apache Camel框架入门示例
- Apache Camel框架入门示例
- Apache Camel框架入门示例
- Apache Camel框架入门示例
- Apache Camel框架入门示例
- Shrio的入门例子,从基础教你使用shrio
- shrio
- Shrio
- Apache Shrio官方介绍文档翻译
- shrio,org.apache.shiro.authc.UsernamePasswordToken
- Apache Thrift 一个入门简单示例
- Apache activemq 入门示例(maven项目)
- 神州数码易拓TIPTOP EPR维护作业模板-上单身下单头维护作业
- FragmentActivity传值到Fragment
- 敏捷开发之Scrum扫盲篇
- 双边滤波与引导滤波
- Netty初探-行业应用及未来
- apache shrio 入门示例
- inux mount / umount 命令的基本用法 及 开机自动挂载
- Xshlle链接Linux乱码问题
- Runtime类理解
- 欧拉角万向死节所
- 【Python学习】Scikit-learn之SVM
- 鼠标右键不灵了 突然右键与左键的功能一样了
- STL之容器map
- 计算机网络:浏览网页的详细过程可以分为几步?