spring boot security ajax_springboot集成security
在项目中其实一直在使用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相关推荐
- Spring Boot 极简集成 Shiro
点击关注公众号,Java干货及时送达 1. 前言 Apache Shiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理. Shiro有三大核心组件: Subject: ...
- Spring Boot最新版集成邮件发送功能大全
Spring Boot最新版集成邮件发送功能大全 前言 一.开启SMTP服务并获取授权码 二.创建Spring Boot项目 1.配置邮箱基本信息: 2.简单邮件发送: 3.发送带附件的邮件: 5.使 ...
- spring boot、mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问
spring boot.mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问 1.原理实现介绍 本质来说使用连接池是为了节省创建.关闭数据库连接的资源消耗,从而提 ...
- 10、Spring Boot 2.x 集成 Log4j2
1.10 Spring Boot 2.x 集成 Log4j2 完整源码: Spring-Boot-Demos 转载于:https://www.cnblogs.com/Grand-Jon/p/99980 ...
- Spring Boot项目中集成Elasticsearch,并实现高效的搜索功能
Spring Boot项目中集成Elasticsearch 前言 环境准备 引入依赖 配置Elasticsearch连接信息 定义实体类 定义Elasticsearch操作接口 实现搜索功能 总结 前 ...
- spring boot 2.0 集成shiro注意事项
2019独角兽企业重金招聘Python工程师标准>>> spring boot 2.0 全面拥抱java8,在安全验证上面 很大程度的简化了配置项,用shiro就要把security ...
- Spring Boot与Activiti集成实战
为什么80%的码农都做不了架构师?>>> Spring Boot基于Spring和"习惯由于配置"原则,实现快速搭建项目的准生产框架.建议现在的Java从业 ...
- 深入Spring Boot:快速集成Dubbo + Hystrix
2019独角兽企业重金招聘Python工程师标准>>> 背景 Hystrix 旨在通过控制那些访问远程系统.服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力.Hystrix ...
- 如何在Spring Boot App中集成H2数据库
你好朋友, 在本教程中,我们将尝试探索如何在Spring Boot应用程序中与H2数据库集成. 在进行检查之前,让我们了解有关H2数据库的一些基础知识,如下所述,然后我们将讨论H2数据库与Spring ...
最新文章
- 技术分享连载(六十九)
- java(9)并发编程
- Typescript,Vue you enjoy it ?
- Java天使之恋攻略,跑跑卡丁车手游天使之恋怎么得 天使之恋获取攻略[多图]
- tcp/udp高并发和高吐吞性能测试工具
- 【Leetcode】刷题题单记录
- 使用Java的BlockingQueue实现生产者-消费者
- Flink 1.9 : Wordcount报错:ClassNotFoundException: yarn.exceptions.YarnException
- python修改zip文件内容_windows-将zip文件内容提取到Python 2.7中的特定目录
- Swift中类的使用
- R_ggplot2基础(四)
- 道路矢量数据下载教程
- 音频格式之AAC(高级音频编码技术)
- 前端字体图标的下载与使用
- 内存屏障 - MemoryBarrier
- 天啦噜,项目上使用InputStream,我被坑了一把!
- 黄河金岸诗词大赛获奖作品选登(1)
- 32位ARM核单片机XL32F003开发板可替代STM32、华大、GD,脚位兼容
- 纯css画梯形,纯CSS3实现的梯形立方体
- Linux内核分析 笔记二 操作系统是如何工作的 ——by王玥
热门文章
- myBaits Expert Whole Genome Enrichment (WGE) 从复杂的DNA来源捕获全基因组DNA
- 优化之Aggregator组件
- RTL8188CUS WIFI模块的使用方式
- 响应式编程(一)什么是响应式编程
- 光学放大倍率(β,Magnification)
- 20岁零基础转行软件测试领域,如何自学并且找到一份10k的offer?
- JavaScript中callee和caller的用法解读
- 关于callee含义
- TI CC2530组网演练(BasicRF——无线控制灯的亮灭)
- linux下ffmpeg命令行推送摄像头和麦克风