apache-shiro学习笔记

c#小王子 c#小王子 2021-10-29 580 Java


apache-shiro学习笔记


1. shiro.ini


[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


2. 加载配置文件


//1.装入INI配置 
Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
 
//2. 创建SecurityManager 
SecurityManager securityManager = factory.getInstance();
 
//3. 使其可访问 
SecurityUtils.setSecurityManager(securityManager);


3. Subject登录


//1. 接受提交的当事人和证书:
AuthenticationToken token = new UsernamePasswordToken(username, password);
//2. 获取当前Subject:
Subject currentUser = SecurityUtils.getSubject();
//3. 登录: 
currentUser.login(token);
 
//退出
subject.logout();
//可设置“记住我”
token.setRememberMe(true);

 

验证步骤:



1. 控制失败的登录


//3. 登录:
try {
    currentUser.login(token);
} catch (IncorrectCredentialsException ice) {
    …
} catch (LockedAccountException lae) {
    …
}
…
catch (AuthenticationException ae) {…
} 


2. 验证是否登录


subject.isAuthenticated();


3. 角色检查


if ( subject.hasRole(“administrator”) ) {
    //显示‘Create User’按钮
} else {
    //按钮置灰
} 


4. 权限检查


if ( subject.isPermitted(“user:create”) ) {
    //显示‘Create User’按钮
} else {
    //按钮置灰?
} 


5. 实例级别的权限检查


if ( subject.isPermitted(“user:delete:jsmith”) ) {
    //删除‘jsmith’用户
} else {
    //不删除‘jsmith’
}


6. 获取会话


Session session = subject.getSession();
Session session = subject.getSession(boolean create);


7. session的一些方法


Session session = subject.getSession();
session.getAttribute("key", someValue); 
Date start = session.getStartTimestamp();
Date timestamp = session.getLastAccessTime(); 
session.setTimeout(millis); ...


8. 加密-哈希


//使用MD5哈希一个文件,并确定该哈希的十六进制值
String hex = new Md5Hash(myFile).toHex();
//SHA-512哈希和密码的Base64编码
String encodedPassword = new Sha512Hash(password, salt, count).toBase64();


9. web


<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>


10. jsp标签库 

<%@ 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的图表

使用-JFreeChart来创建基于web的图表

XStream使用文档

XStream使用文档

WebService发布过程及常见问题

WebService发布过程及常见问题

webpack实战入门进阶调优分享

webpack实战入门进阶调优分享

weblogic调优参数及监控指标

weblogic调优参数及监控指标

weblogic节点管理

weblogic节点管理

weblogic管理控制台概述

weblogic管理控制台概述

weblogic-部署和启动

weblogic-部署和启动

WebLogic-Server-性能及调优-调优-Java-虚拟机

Java 虚拟机(Java virtual machine,简称 JVM)是一种虚拟“执行引擎”实例,可在微处理器上执行 Java 类文件中的字节码。调整 JVM 的方式会影响 Weblogic Server 和应用程序的性能。

Velocity用户教程

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。

Velocity用户手册

Velocity 用户手册是帮助页面设计者和内容提供者认识 Velocity 和其简单而功能强大的脚本语言――Velocity 模板语言(VTL)。在手册上的许多例子,都是用 Velocity 插入动态的内容到网页上,但是所有的 VLT 例子都能应用到其他的页面和模板中。


文章热度: 166291
文章数量: 333
推荐阅读

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

知之

知之平台是全球领先的知识付费平台。提供各个领域的项目实战经验分享,提供优质的行业解决方案信息,来帮助您的工作和学习

使用指南 建议意见 用户协议 友情链接 隐私政策 Powered by NOOU ©2020 知之