SpringSecurity集中式整合之使用数据库数据实现认证
创建用户pojo对象
这里直接实现SpringSecurity的用户对象接口,并添加角色集合私有属性。注意接口属性都要标记不参与json的处理
@Data
public class SysRole implements GrantedAuthority {private Integer id;private String roleName;private String roleDesc;
}
创建角色pojo对象
这里直接使用SpringSecurity的角色规范,我们实现UserDetails的类型
@Data
public class SysUser implements UserDetails {private Integer id;private String username;private String password;private Integer status;private List<SysRole> roles;@JsonIgnore@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {return roles;}@Overridepublic String getPassword() {return password;}@Overridepublic String getUsername() {return username;}@JsonIgnore@Overridepublic boolean isAccountNonExpired() {return true;}@JsonIgnore@Overridepublic boolean isAccountNonLocked() {return true;}@JsonIgnore@Overridepublic boolean isCredentialsNonExpired() {return true;}@JsonIgnore@Overridepublic boolean isEnabled() {return true;}
}
提供角色mapper接口
public interface RoleMapper extends Mapper<SysRole> {@Select("SELECT r.id, r.role_name roleName, r.role_desc roleDesc " +"FROM sys_role r, sys_user_role ur " +"WHERE r.id=ur.rid AND ur.uid=#{uid}")public List<SysRole> findByUid(Integer uid);
}
提供用户mapper接口
这里就用到了Mybatis的一对多进行操作
public interface UserMapper extends Mapper<SysUser> {@Select("select * from sys_user where username = #{username}")@Results({@Result(id = true, property = "id", column = "id"),@Result(property = "roles", column = "id", javaType = List.class,many = @Many(select = "com.itheima.mapper.RoleMapper.findByUid"))})public SysUser findByName(String username);
}
提供认证service接口
@Service
@Transactional
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {return userMapper.findByUsername(s);}
}
SpringSecurity集中式整合之使用数据库数据实现认证相关推荐
- SpringSecurity集中式整合之授权操作
在启动类中把加密对象放入IOC容器 @SpringBootApplication @MapperScan("com.leon.mapper") public class Secur ...
- SpringSecurity集中式整合之加入jsp
整合认证第二版 加入jsp,使用自定义认证页面 说明 SpringBoot官方是不推荐在SpringBoot中使用jsp的,那么到底可以使用吗?答案是肯定的! 不过需要导入tomcat插件启动项目,不 ...
- springboot整合poi读取数据库数据和图片动态导出excel
springboot整合poi读取数据库数据和图片动态导出excel 第一次操作 话不多说就直接上代码 实现代码 需要的依赖 <dependency><groupId>org. ...
- 集中式整合之编写springsecurity配置类
提供SpringSecurity配置类 @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(securedEnabled=tru ...
- 集中式整合之加入springsecurity
创建工程并导入jar包 先只导入SpringBoot <parent><groupId>org.springframework.boot</groupId>< ...
- 现代银行集中式业务系统及数据整合
随着互联网和移动互联网的普及,互联网金融也日益进入人们的日常生活.当前互联网金融方兴未艾,各种新颖高效的金融产品层出不穷.随之而来的是日益激烈的竞争.在这次金融革新的大潮中,传统银行暂时处于相对保守的 ...
- 2-10-分布式应用与集中式应用
分布式数据应用 定义:是指数据存放在计算机网络的不同场地的计算机中,每一场地都有自治处理能力并完 成局部应用:而每一场地也参与(至少一种)全局应用程序的执行,全局应用程序可通过网络 通信访问系统中的多 ...
- 集中式版本控制与分布式版本控制
文章目录 集中式版本控制 分布式版本控制 引用 集中式版本控制 所有的版本数据都存在服务器上,用户的本地设备就只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或 ...
- 2021年大数据ELK(一):集中式日志协议栈Elastic Stack简介
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.简介 二.ELK 协议栈介绍及体系结构 三.集中式日志协议栈 ...
最新文章
- Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...
- PHP内核介绍及扩展开发指南—高级主题
- 关于在pycharm下提示ModuleNotFoundError: No module named 'XXX' 的一种可能
- erlang虚拟机精要(1)-运行时系统简介
- 邮件服务器之微软Exchange server (转)
- 解决Too many open files问题
- 如何实现用户通信授权的可信、可知、可追溯?——通信授权服务技术解读
- (软件工程复习核心重点)第三章需求分析-第一节:需求分析相关概念
- 活动预告丨openGauss西安Meetup来啦!本周五见!
- 小熊派IoT开发板系列教程正式发布——免费学习
- C语言printf函数详解和示例
- 得到多组单选框的值_多组学如何构建预后预测模型,还发了7分+?
- 如何产生好的词向量?
- 【转】初试JNI Java与C/C++交互
- 设计实例_Python程序设计实例教程课后习题参考答案
- 【Prison Break】第五天(4.1)
- mindoc制作思维导图
- php正则表达式后向引用和贪婪模式
- C/C++刁钻问题各个击破之细说sizeof .
- firefox 浏览器证书问题