文档章节

自定义Realm进行鉴权

x
 xxm1995
发布于 2018/11/27 16:24
字数 269
阅读 20
收藏 0

1.创建一个Realm类

创建一个类,继承AuthorizingRealm ,然后在doGetAuthenticationInfo中重写认证的方法

@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
   String username = (String) token.getPrincipal();
   String password = new String((char[]) token.getCredentials());
   CbUserDO userDO = cbUserService.getUser( username );
   // 账号不存在
   if (userDO==null){
      throw new UnknownAccountException("未找到账号");
   }
   // 密码错误
   if (!password.equals(userDO.getPassword())) {
      throw new IncorrectCredentialsException("账号或密码不正确");
   }
   // 账号锁定
   if (userDO.getStatus() == 0) {
      throw new LockedAccountException("账号已被锁定,请联系管理员");
   }
   // password 需要和 token.getCredentials() 一致且不可为空,不然会抛出异常
   return new SimpleAuthenticationInfo(userDO, password, getName());
}

2.其他需要重写的方法

/**
 * 判断此Realm是否支持此Token
 *
 * @param token tocken
 * @return 是否支持
 */
@Override
public boolean supports(AuthenticationToken token) {
   return token instanceof UsernamePasswordToken;
}

/**
* 该realm的名字
* @return name
*/
@Override
public String getName() {
    return "UserRealm";
}

 /**
 * 授权信息
 */
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    return null;
}

3.需要注意的事项

new SimpleAuthenticationInfo() 中的 password 需要和 token.getCredentials() 的值一致且不可为null,不然会抛出异常

© 著作权归作者所有

x
粉丝 0
博文 24
码字总数 12971
作品 0
菏泽
私信 提问
JFianl整合Shiro

原文: 入门必看 英文好的可以直接看官网教程,英文不好的可以看下开涛的博客《跟我学Shiro》系列 在看教程之前,最好了解想一些shiro的概念:Apache Shiro Terminology 自己入门时踩的坑 一...

听_风
2016/08/30
102
0
SpringBoot 优雅的整合 Shiro

Apache Shiro是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的...

木云凌
03/19
0
0
SpringBoot集成Shiro并用MongoDB做Session存储

之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mongodb中,这个比较符...

小红牛
2018/01/04
0
0
SpringBoot集成Shiro并用MongoDB做Session存储

之前项目鉴权一直使用的Shiro,那是在Spring MVC里面使用的比较多,而且都是用XML来配置,用Shiro来做权限控制相对比较简单而且成熟,而且我一直都把Shiro的session放在mongodb中,这个比较符...

调皮仔3683
2018/01/03
0
0
shiro jwt 构建无状态分布式鉴权体系

一:JWT 1、令牌构造 JWT(json web token)是可在网络上传输的用于声明某种主张的令牌(token),以JSON 对象为载体的轻量级开放标准(RFC 7519)。 一个JWT令牌的定义包含头信息、荷载信息、签...

wangjie2016
2017/11/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

抽象同步队列AQS——AbstractQueuedSynchronizer锁详解

AQS——锁的底层支持 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资...

须臾之余
今天
3
0
springboot配置百度UEditor 富文本详解

富文本简介 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 准备工作 ueditor需要单独文...

wotrd
昨天
4
0
mysql 5.7之my.cnf配置大全

[client]port = 3306socket = /tmp/mysql.sock[mysqld]###############################基础设置######################################Mysql服务的唯一编号 每个mysql服务...

Online_Reus
昨天
3
0
MAVEN打包时引入外部链接的包

1.项目引入了ORACLE的jar包,MAVEN配置如下 2.打jar包的时候需要指定下main入口函数mainClass <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> ......

Cobbage
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部