黑马程序员技术交流社区
标题: 【武汉校区学习资料】shiro权限管理入门(三) [打印本页]
作者: 武汉分校-小舞 时间: 2017-8-4 15:03
标题: 【武汉校区学习资料】shiro权限管理入门(三)
自定义Realm
上边的程序中使用的是Shiro自带的iniRealm。iniRealm从配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义Realm。
实现自定义Realm
[java] view plain copy print?
- public class CustomRealm extends AuthorizingRealm {
- // 设置Realm的名称
- @Override
- public String getName() {
- return super.getName();
- }
- // 支持UsernamePasswordToken
- @Override
- public boolean supports(AuthenticationToken token) {
- return token instanceof UsernamePasswordToken;
- }
- // 用于认证
- @Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
- // token是用户输入的
- // 第一步从token中取出身份信息
- String usercode = (String) token.getPrincipal();
- // 第二步:根据用户输入的usercode从数据库查询
- // ......
- // 如果查询不到返回null
- // 数据库中用户账号是zhangsan
- if (!usercode.equals("zhangsan")) {
- return null;
- }
- // 模拟从数据库中查询到密码
- String password = "123456";
- // 如果查询到返回认证信息AuthenticationInfo
- SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(usercode, password,
- this.getName());
- return simpleAuthenticationInfo;
- }
- // 用于授权
- @Override
- protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
- return null;
- }
- }
[java] view plain copy print?
- public class CustomRealm extends AuthorizingRealm {
- // 设置Realm的名称
- @Override
- public String getName() {
- return super.getName();
- }
- // 支持UsernamePasswordToken
- @Override
- public boolean supports(AuthenticationToken token) {
- return token instanceof UsernamePasswordToken;
- }
- // 用于认证
- @Override
- protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
- // token是用户输入的
- // 第一步从token中取出身份信息
- String usercode = (String) token.getPrincipal();
- // 第二步:根据用户输入的usercode从数据库查询
- // ......
- // 如果查询不到返回null
- // 数据库中用户账号是zhangsan
- if (!usercode.equals("zhangsan")) {
- return null;
- }
- // 模拟从数据库中查询到密码
- String password = "123456";
- // 如果查询到返回认证信息AuthenticationInfo
- SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(usercode, password,
- this.getName());
- return simpleAuthenticationInfo;
- }
- // 用于授权
- @Override
- protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
- return null;
- }
- }
点击下方标题查看相关学习资料
作者: laleila 时间: 2017-8-9 14:14
谢谢老师分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |