[main] #创建一个HashedCrededtialsMatcher对象 cm = org.apache.shiro.authc.credential.HashedCredentialsMatcher #调用cm的setHashAlgorithm(...)方法 cm.hashAlgorithm = SHA-512 cm.hashIterations = 1024 # Base64 encoding (less text): cm.storedCredentialsHexEncoded = false # $cm,引用上面定义的cm对象 # 指定密码编码方式 iniRealm.credentialsMatcher = $cm #设置某个filter启用状态 ssl.enabled = false #设置缓存机制 #Shiro 的SecurityManager 实现及所有AuthorizingRealm实现都实现了CacheManagerAware,设置会改变这些类的缓存机制 cacheManager = my.implementation.of.CacheManager [users] ##username = password, roleName1, roleName2, …, roleNameN jdoe = TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJpcyByZWFzb2 asmith = IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbXNoZWQsIG5vdCB [roles] #rolename = permissionDefinition1, permissionDefinition2, … , permissionDefinitionN #permissionDefinition 是一个任意的字符串,但大多数人将会使用符合 #org.apache.shiro.authz.permission.WildcardPermission 格式的字符串 admin = * master = winnebago:drive:eagle5 guest = "printer:5thFloor:print,info" [urls] #格式为:URL_Ant_Path_Expression = Path_Specific_Filter_Chain #右边为用逗号隔开的过滤器列表,格式为:filter1[optional_config1], ..., filterN[optional_configN] /assets/** = anon #第一个匹配的url会短路之后匹配的url 即FIRST MATCH WINS原则 /user/signup = anon /user/** = user /rpc/rest/** = perms[rpc:invoke], authc /** = authc
//1.装入INI配置 Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //2. 创建SecurityManager SecurityManager securityManager = factory.getInstance(); //3. 使其可访问 SecurityUtils.setSecurityManager(securityManager);
//1. 接受提交的当事人和证书: AuthenticationToken token = new UsernamePasswordToken(username, password); //2. 获取当前Subject: Subject currentUser = SecurityUtils.getSubject(); //3. 登录: currentUser.login(token); //退出 subject.logout(); //可设置“记住我” token.setRememberMe(true);
验证步骤:
//3. 登录: try { currentUser.login(token); } catch (IncorrectCredentialsException ice) { … } catch (LockedAccountException lae) { … } … catch (AuthenticationException ae) {… }
subject.isAuthenticated();
if ( subject.hasRole(“administrator”) ) { //显示‘Create User’按钮 } else { //按钮置灰 }
if ( subject.isPermitted(“user:create”) ) { //显示‘Create User’按钮 } else { //按钮置灰? }
if ( subject.isPermitted(“user:delete:jsmith”) ) { //删除‘jsmith’用户 } else { //不删除‘jsmith’ }
Session session = subject.getSession(); Session session = subject.getSession(boolean create);
Session session = subject.getSession(); session.getAttribute("key", someValue); Date start = session.getStartTimestamp(); Date timestamp = session.getLastAccessTime(); session.setTimeout(millis); ...
//使用MD5哈希一个文件,并确定该哈希的十六进制值 String hex = new Md5Hash(myFile).toHex(); //SHA-512哈希和密码的Base64编码 String encodedPassword = new Sha512Hash(password, salt, count).toBase64();
<filter> <filter-name>ShiroFilter</filter-name> <filter-class> org.apache.shiro.web.servlet.IniShiroFilter </filter-class> <!-- 没有init-param属性就表示从classpath:shiro.ini装入INI配置 --> </filter> <filter-mapping> <filter-name>ShiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> <shiro:user> <shiro:principal/> </shiro:user> <shiro:guest> ! <a href=”register.jsp”>Register today!</a> </shiro:guest> <!--是否成功通过了验证,比user更为严格--> <shiro:authenticated> <a href="updateAccount.jsp">Update your contact information</a>. </shiro:authenticated> <shiro:notAuthenticated> Please <a href="login.jsp">login</a> in order to update your credit card information. </shiro:notAuthenticated> <!--输出subject.getPrincipal()的值--> Hello, <shiro:principal/>, how are you today? <!--你想输出一个不是主要principal的值,而是属于另一个Subject 的principal collection, 你可以通过类型来获取该principal 并输出该值。可设置principal的值类型--> User ID: <shiro:principal type="java.lang.Integer"/> <!-- 若principal为一个对象,则可用property取它某一属性 --> Hello, <shiro:principal property="firstName"/>, how are you today? <shiro:principal type="com.foo.User" property="firstName"/>, <!--检查是否具有权限--> <shiro:hasRole name="administrator"> <a href="admin.jsp">Administer the system</a> </shiro:hasRole> <shiro:lacksRole name="administrator"> Sorry, you are not allowed to administer the system. </shiro:lacksRole> <!--具有任一权限--> <shiro:hasAnyRole name="developer, project manager, administrator"> You are either a developer, project manager, or administrater. </shiro:hasAnyRole> <!--检查是否蕴含特定权限--> <shiro:hasPermission name="user:create"> <a href="createUser.jsp">Create a new User</a> </shiro:hasPermission> <shiro:lacksPermission name="user:delete"> Sorry, you are not allowed to deleted user accounts. </shiro:hasPermission>
【下载地址】
百度网盘链接:https://pan.baidu.com/s/1TNoeYEX1gboGR7IlQTPmjw
提取码:qivu
相关文章
使用-JFreeChart来创建基于web的图表
XStream使用文档
WebService发布过程及常见问题
webpack实战入门进阶调优分享
weblogic调优参数及监控指标
weblogic节点管理
weblogic管理控制台概述
weblogic-部署和启动
WebLogic-Server-性能及调优-调优-Java-虚拟机
Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。
Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。
FlashFXP绿色版网盘下载,附激活教程 1782
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1565
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1623
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1707
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1824
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64