- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
apacheshiro学习笔记
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
加载配置文件
//1.装入INI配置
FactorySecurityManager factory = new IniSecurityManagerFactory(classpath:shiro.ini);
//2. 创建SecurityManager
SecurityManager securityManager = factory.getInstance();
//3. 使其可访问
SecurityUtils.setSecurityManager(securityManager);
Subject登录
//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.is
文档评论(0)