代码拉取完成,页面将自动刷新
这两个项目均为Shiro的示例项目,其中javaweb项目中实现了Shiro的单点登录,即同一个用户多设备登录限制,后者登录的用户踢出前者登录的用户。
Subject
,调用SecurityUtils.getSubject();
得到当前用户Subject的isAuthenticated()
UsernamePasswordToken
对象Subject
的login(AuthenticationToken)
方法。Realm
的方法,从数据库中获取对应的记录,返回给Shiro
org.apache.shiro.realm.AuthenticatingRealm
类doGetAuthenticationInfo(AuthenticationToken)
方法shiro
完成对密码的比对。AuthenticatingRealm
的credentialsMatcher
属性来进行密码的比对MD5
Realm
的credentialsMatcher
属性。直接使用HashedCredentialsMatcher
对象,并设置加密算法即可。doGetAuthenticationInfo
方法返回值创建SimpleAuthenticationInfo
对象的时候,
需要使用new SimpleAuthenticationInfo(principal, credentials, credentialsSalt, realmName);
构造器ByteSource.Util.bytes()
来计算盐值new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations);
来计算盐值加密后的密码的值AuthorizingRealm
类,并实现其doGetAuthorizationInfo
方法AuthorizingRealm
类继承自AuthenticatingRealm
,
但没有实现AuthenticatingRealm
中的doGetAuthenticationInfo
方法,
所以认证和授权只需要继承AuthorizingRealm
就可以了,同时实现他的两个抽象方法。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。