在项目中其实一直在使用spring的security框架.核心主要是几张表:用户表,用户角色关联表,角色表,角色权限关联表,权限表(菜单表)

工作中所使用的几张关联表,authorization(类似权限表),menu_list(菜单表,主要是关联authorization下的菜单名称进行子父菜单关联),user(用户表),role(角色表),role_action(角色权限表,主要关联role和authorization的关联表).

这次主要根据springcloud官方自己搭建一套security进行练习,并重新对security进行更深入的理解。

1.准备五张表

2.新建一个springboot项目

添加marven:

org.springframework.boot spring-boot-starter-parent 2.0.1.RELEASEorg.springframework.cloud spring-cloud-dependencies Finchley.M7pomimportorg.springframework.boot spring-boot-starter-web org.projectlombok lombok org.springframework.boot spring-boot-starter-freemarker org.springframework.boot spring-boot-starter-security org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2com.alibaba druid-spring-boot-starter 1.1.9mysql mysql-connector-java spring-milestonesSpring Milestoneshttps://repo.spring.io/libs-milestonefalse

配置application.yml

# 配置freemarkerspring: freemarker: # 设置模板后缀名 suffix: .ftl # 设置文档类型 content-type: text/html # 设置页面编码格式 charset: UTF-8 # 设置页面缓存 cache: false # 设置ftl文件路径 template-loader-path: - classpath:/templates # 设置静态文件路径,js,css等 mvc: static-path-pattern: /static/** datasource: name: test url: jdbc:mysql://127.0.0.1:3306/rbac_db username: root password: root # druid 连接池 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver主要是为了练习,所以添加了前端页面的模板

这里说个知识:

base64加密是属于双向加密,就是加密后可以解密回来MD5是单向加密,就是加密后无法解密MD5加盐加密就是将(用户名+密码)进行MD5加密(类似都叫加盐,这里用户名就是盐值)支付宝的公钥私钥加密,公钥解密私钥,这个是最安全的加密方式.另外https是使用了安全证书,https的端口一般是443.http的端口是80

导入mapper

public interface UserMapper { // 查询用户信息 @Select(" select * from sys_user where username = #{userName}") User findByUsername(@Param("userName") String userName); // 查询用户的权限 @Select(" select permission.* from sys_user user" + " inner join sys_user_role user_role" + " on user.id = user_role.user_id inner join " + "sys_role_permission role_permission on user_role.role_id = role_permission.role_id " + " inner join sys_permission permission on role_permission.perm_id = permission.id where user.username = #{userName};") List findPermissionByUsername(@Param("userName") String userName);}public interface PermissionMapper { // 查询苏所有权限 @Select(" select * from sys_permission ") List findAllPermission();}

动态查询账号

使用UserDetailsService实现动态查询数据库验证账号(这里新建了user的实体类,并且implements userDetails),这个userDetails是security默认提供给我们的,因此对应的username和password字段不能写错否则对应不上。

@Componentpublic class MyUserDetailsService implements UserDetailsService { @Autowired private UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // 1.根据数据库查询,用户是否登陆 User user = userMapper.findByUsername(username); // 2.查询该用户信息权限 if (user != null) { // 设置用户权限 List listPermission = userMapper.findPermissionByUsername(username); System.out.println("用户信息权限:" + user.getUsername() + 

spring boot security ajax_springboot集成security相关推荐

  1. Spring Boot 极简集成 Shiro

    点击关注公众号,Java干货及时送达 1. 前言 Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理. Shiro有三大核心组件: Subject: ...

  2. Spring Boot最新版集成邮件发送功能大全

    Spring Boot最新版集成邮件发送功能大全 前言 一.开启SMTP服务并获取授权码 二.创建Spring Boot项目 1.配置邮箱基本信息: 2.简单邮件发送: 3.发送带附件的邮件: 5.使 ...

  3. spring boot、mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问

    spring boot.mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问 1.原理实现介绍 本质来说使用连接池是为了节省创建.关闭数据库连接的资源消耗,从而提 ...

  4. 10、Spring Boot 2.x 集成 Log4j2

    1.10 Spring Boot 2.x 集成 Log4j2 完整源码: Spring-Boot-Demos 转载于:https://www.cnblogs.com/Grand-Jon/p/99980 ...

  5. Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能

    Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...

  6. spring boot 2.0 集成shiro注意事项

    2019独角兽企业重金招聘Python工程师标准>>> spring boot 2.0 全面拥抱java8,在安全验证上面 很大程度的简化了配置项,用shiro就要把security ...

  7. Spring Boot与Activiti集成实战

    为什么80%的码农都做不了架构师?>>>    Spring Boot基于Spring和"习惯由于配置"原则,实现快速搭建项目的准生产框架.建议现在的Java从业 ...

  8. 深入Spring Boot:快速集成Dubbo + Hystrix

    2019独角兽企业重金招聘Python工程师标准>>> 背景 Hystrix 旨在通过控制那些访问远程系统.服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力.Hystrix ...

  9. 如何在Spring Boot App中集成H2数据库

    你好朋友, 在本教程中,我们将尝试探索如何在Spring Boot应用程序中与H2数据库集成. 在进行检查之前,让我们了解有关H2数据库的一些基础知识,如下所述,然后我们将讨论H2数据库与Spring ...

最新文章

  1. 技术分享连载(六十九)
  2. java(9)并发编程
  3. Typescript,Vue you enjoy it ?
  4. Java天使之恋攻略,跑跑卡丁车手游天使之恋怎么得 天使之恋获取攻略[多图]
  5. tcp/udp高并发和高吐吞性能测试工具
  6. 【Leetcode】刷题题单记录
  7. 使用Java的BlockingQueue实现生产者-消费者
  8. Flink 1.9 : Wordcount报错:ClassNotFoundException: yarn.exceptions.YarnException
  9. python修改zip文件内容_windows-将zip文件内容提取到Python 2.7中的特定目录
  10. Swift中类的使用
  11. R_ggplot2基础(四)
  12. 道路矢量数据下载教程
  13. 音频格式之AAC(高级音频编码技术)
  14. 前端字体图标的下载与使用
  15. 内存屏障 - MemoryBarrier
  16. 天啦噜,项目上使用InputStream,我被坑了一把!
  17. 黄河金岸诗词大赛获奖作品选登(1)
  18. 32位ARM核单片机XL32F003开发板可替代STM32、华大、GD,脚位兼容
  19. 纯css画梯形,纯CSS3实现的梯形立方体
  20. Linux内核分析 笔记二 操作系统是如何工作的 ——by王玥

热门文章

  1. myBaits Expert Whole Genome Enrichment (WGE) 从复杂的DNA来源捕获全基因组DNA
  2. 优化之Aggregator组件
  3. RTL8188CUS WIFI模块的使用方式
  4. 响应式编程(一)什么是响应式编程
  5. 光学放大倍率(β,Magnification)
  6. 20岁零基础转行软件测试领域,如何自学并且找到一份10k的offer?
  7. JavaScript中callee和caller的用法解读
  8. 关于callee含义
  9. TI CC2530组网演练(BasicRF——无线控制灯的亮灭)
  10. linux下ffmpeg命令行推送摄像头和麦克风