Springboot+SpringSecurity实现权限控制(二、用户登录认证)

2023-11-07

配置Security核心配置类

将WebSecurityConfig放在auth包下

右击鼠标-->点击Generate... -->点击Override Methods... 选择下面的三个configure

禁用防护:

http.csrf().disable()

禁用Session的配置:

.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)

禁用缓存:

.headers().cacheControl();


@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity//开启权限注解控制
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
       super.configure(auth);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        super.configure(web);
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
	super.configure(http);
}

 

用户登录认证

理解思路:

根据用户名查询用户信息,判断用户名是否存在,不存在则给出异常,存在说明没毛病。

存在就根据用户的id去数据库查询他所拥有的角色身份,用每一个的角色身份查出所拥有的权限,这可以用sql语句一次性查出,也可以分两步查询,将权限编码存储在权限集authorities中

返回值 UserDetails 是一个接口 ,有两个参数构造,一个是三个参数的构造方法,另一个是七个的构造方法

String getPassword( ); 获取密码

String getUsername( ); 获取用户名

Collection<? extends GrantedAuthority> getAuthorities( ); 获取所有权限

boolean isAccountNonExpired( ); 是否账号过期

boolean isAccountNonLocked( ); 是否账号被锁定

boolean isCredentialsNonExpired( ); 凭证(密码)

boolean isEnabled( ); 是否可用

 

UserDetalisServiceImpl

package com.jiangzhu.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jiangzhu.entity.SysMenu;
import com.jiangzhu.entity.SysUser;
import com.jiangzhu.mapper.SysUserMapper;
import com.jiangzhu.service.SysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class UserDetalisServiceImpl implements UserDetailsService {

    @Autowired
    private SysUserMapper userMapper;


    @Autowired
    private SysMenuService menuService;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        //查询用户是否存在
        Qu
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot+SpringSecurity实现权限控制(二、用户登录认证) 的相关文章

  • 如何从二维数组中仅打印单个列?

    我正在编写这个程序 我必须只打印二维数组的一列 而不是两者 for int i 0 i lt sjf length i for int j 0 j lt sjf i length j System out printf 5d 4s sjf
  • 文件写入器覆盖文件而不是附加到末尾时出现问题

    好的 我在将多行写入文本文件时遇到一些问题 程序运行 但不会每次都使用新行 当我希望它运行 4 次时 文本文件应如下所示 a b c d 相反 它看起来像 d 谁知道如何解决这个问题 所有导入均正确导入 来源 已稍加编辑 假设一切都已正确定
  • @Nullable 和 SonarQube “有条件执行的块应该可达”警告

    包有以下package info java ParametersAreNonnullByDefault package foo import javax annotation ParametersAreNonnullByDefault 类有
  • Java 扫描仪问题 (JFrame)

    我正在尝试使用扫描仪来编辑塔防游戏的级别 但是 它不会将级别 图块图像 更新为自定义文件的级别 0 是草 1 是石头 1 是什么都没有 等等 我发现了错误 但如何修复它 我需要添加 更改什么才能消除这个错误 java lang NullPo
  • JaxB2Marshaller 未将 XML 绑定到 Kotlin 数据类

    我正在编写一个批处理作业来解析 XML 提取字段并将它们保存在数据库中 解析 XML 时 它会选取 2 个根元素 但将所有字段保留为空 因此在我的数据库中 我有 2 条记录将为空字段 似乎无法弄清楚为什么它无法读取元素 TIA Bean f
  • 在 Spring Security 中创建自定义 PostAuthorize 方法

    我正在尝试创建一个自定义方法 用于预 后授权调用 如下所示 public class CustomLSecurityExpressionHandler extends DefaultMethodSecurityExpressionHandl
  • Jersey 客户端异步 POST 请求不等待响应

    我创建了一个简单的 Jersey 客户端 它能够成功地使用有效负载执行 POST 请求 但现在它正在等待来自 http 端点的响应 public void callEndpoint String endpoint String payloa
  • 创建UML图时应该编写构造函数吗?

    我有一项作业要求我为实际的 Java 程序创建 UML 图 但程序中有几个构造函数方法 我很困惑 我是否应该将这些构造函数方法添加到图中 根据 UML 规范 2 5 版第 11 4 4 节 构造函数是一个具有所属类类型的单个返回结果参数的操
  • 使用 Windows 锁定屏幕后删除 Kerberos 缓存票证

    无论如何 有没有办法阻止 Kerberos 缓存的票证在 Windows 进入锁定屏幕后被删除 首次登录 Windows 时 klist exe 显示 2 个缓存票证 但是 发生 Windows 锁屏事件后 klist exe 显示 0 个
  • 如何将多个值存储到一个键(java)

    我搜索一个可以存储多个键值对的数据结构 数据基本上是这样的 1 value 1 2 value 2 于是我想到了使用HashMap 遗憾的是 这对我不起作用 因为一个键可能会出现多个值 在上面的例子中 1 value 2 可能是另一个条目
  • 如何从网上获取源代码?

    我正在尝试从 Web 获取 HTML 源代码 我尝试这样做 u new URL url URLConnection con u openConnection con setRequestProperty User Agent Mozilla
  • Java SSO 与 Wildfly 8、Java 1.8.0_45 和 Active Directory

    我对这个主题进行了很多搜索 但找不到解决方案 要求的简短描述 Wildfly 8 2 下 Web 应用程序上的 SSO 在 Active Directory 中验证 Windows 用户的身份 当 SSO 失败时回退到登录表单 在 Wild
  • 如何用Java捕获音频数据

    我想访问我的麦克风用 Java 录制的音频数据 我该怎么做呢 我的目标是保存录制的音频数据并同时向用户播放 如果您不需要 JMF 中的任何附加功能 我会避免使用它 因为开发已经停止 最后一个版本是 2004 年 它与 Java 6 存在兼容
  • 调用本机方法时返回 java.lang.UnsatisfiedLinkError

    我正在尝试为第三方 DLL 制作 Java 包装器 我创建了自己的 DLL 充当 JNI 和第三方 DLL 之间的中间人 在java中我加载这个DLL很好但是错误java lang UnsatisfiedLinkError sixense
  • 为什么对象可以改变类变量的值?

    由甲骨文提供定义 http docs oracle com javase tutorial java javaOO classvars html 有时 您希望拥有所有对象共有的变量 这是通过 static 修饰符来完成的 声明中带有 sta
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • JavaFX颜色选择器的语言

    有没有办法改变语言ColorPicker的文本 例如 自定义颜色 当前颜色 新颜色 色相 饱和度 亮度 不透明度 保存 使用 取消 编辑 以下答案适合那些需要更多内容的人exotic语言 如果您使用其中之一 de es fr it ja k
  • Apache Beam:如何在使用重复数据删除功能时解决“ParDo 需要确定性密钥编码器才能使用状态和计时器”

    我正在尝试使用 Apache Beam 的重复数据删除功能对来自 Google Cloud Pubsub 的输入消息进行重复数据删除 但是 我创建后遇到错误KV
  • Android 调整图片大小

    我的图像存储在 SD 卡上 每个大小约为 4MB 我想调整每个的大小 而不是将其设置为 ImageView 但我不能使用BitmapFactory decodeFile path 因为异常 java lang OutOfMemoryErro
  • Jersey:返回字符串列表

    我尝试以 JSON 和 XML 形式返回 Jersey 中的字符串列表 我以为这会是微不足道的 我的第一次尝试是写这样的东西 GET Produces MediaType APPLICATION JSON MediaType APPLICA

随机推荐

  • Shiro源码分析-----认证流程/授权流程----------Subject

    本文转载自 认证流程和授权流程 源码分析的第二篇以Subject的初始化为题 一 回顾Apache Shiro创建Subject的步骤如下 1 获取SecurityManager工厂 此处使用Ini配置文件初始化SecurityManage
  • csgo删除服务器地图在哪个文件夹,CSGO de_cache地图

    资源说明 CSGO de cache地图 由 Volcano 制作 需要的玩家不要错过哦 资源详情 Sal Volcano Garozzo发布了其最新制作的CS GO地图de cache Volcano制作的首个地图de nuke ve 相
  • Java请求合并与分而治之

    在系统设计的时候 你是否也遇到过这两个问题 1 大量请求造成数据库压力过大 2 大量数据库查询造成请求执行时间过长 本文将介绍在高并发 大数据环境下 以上两种问题的应对思路 一 请求合并 首先思考一个场景 在高并发的系统中 在每秒内有大量的
  • 全连接神经网络单层模型原理

    全连接神经网络单层模型原理 前言 单层MLP 1 前向传播 2 激活函数 2 1 Sigmoid函数 2 2 tanh函数 2 3 ReLu函数 2 4 Leaky ReLu函数 3 损失函数 4 梯度下降 前言 深度学习是学习样本数据的内
  • ​少儿机器人编程与三大主课关系

    说到机器人编程 在常规概念里 很难将其和三大主课联系到一起 回首过去 国家并不提倡未成年人去学专业技术含量较高的机器人编程教育的 格物斯坦提示 但随着现在老龄化的社会现象的出现 国家需要大批有志少年用高科技方式去改造社会 这就要精通机器人编
  • SpringBoot启动控制台的banner是怎么回事

    前言 每次启动SpringBoot项目时 总是能看到控制台打印了一串字符 隐约能辨认出是 Spring 不知大家是否也好奇过是怎么实现的 是直接打印固定的字符串 还是根据什么算法去生成的 于是闲暇无事 探究一番 只想修改banner可以跳到
  • 时间序列分解VMD和长短记忆神经网络lstm

    这篇记一下时间序列分解和长短记忆神经网络lstm如何一起用 vmd lstm 用python实现 首先预设的流程是 读取数据 vmd时间分解 把信号分解成5行 最大最小归一化 给模型设置参数 编译 fit函数 训练 反归一化 得到的五个信号
  • 内存的分区

    内存 物理内存 虚拟内存 物理内存 计算机真正的内存 虚拟内存 为了减缓物理内存的使用 将硬盘的一部份容量虚拟成虚拟成内存 程序员视野中看到的是虚拟地址 在32的操作系统内 每个进程的寻址范围是2 32 地址一般我们使用16进制表示 0x0
  • HTTP协议是什么?有什么作用?

    HTTP协议 Hyper Text Transfer Protocol HTTP 全称为 超文本传输协议 是客户端浏览器或者是其他的程序和Web服务器之间的应用层通信协议 它通常运行在TCP之上 它指定了客户端可能发送给服务器什么样的消息以
  • python学习(一) windows开发环境搭建+linux运行环境

    朋友向我推荐了python 说怎么怎么好 计划用10 12次学习完成python的初步掌握和了解 学习一门语音 最快的方法就是自己搭建环境 并且写hello world 所以第一节就从开发环境搭建和运行环境搭建开始 一 目标 开发环境和运行
  • Android系统签名介绍

    一 签名原理介绍 apk的签名 简单说开发者可以通过签名 对应用进行标识和更新 包名在一个设备上是唯一的 这样可以避免被相同包名应用随意覆盖安装 这是一个非常重要的安全功能 系统中的签名文件 也是对系统中应用进行签名 编译应用是可以指定签名
  • Echarts中tooltip添加单位

    案例 代码 tooltip trigger axis axisPointer type cross crossStyle color 999 formatter function params var relVal params 0 nam
  • freemarker导出pdf

    freemarker模板导出doc的之前有写过 这里就不再多说了 不清楚的可以看之前的文章Freemarker 模板导出 带图片 转换后的文件展示 FreemarkerUtils工具类 这里用的工具类导出和之前不一样 不仅仅是页面进行下载
  • 查看服务器cpu和内存信息

    先安装硬件信息获取工具dmidecode yum y install dmidecode 查看CPU详细信息 1 查看CPU物理个数 grep physical id proc cpuinfo sort u wc l 2 查看CPU核心数
  • 如何去掉网页复制到word后的黑(或灰)背景色

    复制网页到word后 文字有时会带有黑色或灰色背景 看着很累 十分让人的讨厌和无奈 解决的方法 1 先将复制网页到记事本后 再将记事本中的复制到word 结果 背景色是没有了但是网页上的图也没有了 只得文字和图片分开复制 图片直接复制到wo
  • Android 多种方式修改Settings数据库

    若有获取Context的其他方法 还请走过路过的大佬不吝赐教 Android原生涉及到了众多属性及默认值 其中有部分就存储在Settings数据库中 地址如下 Android frameworks base core java androi
  • CLI 命令行实用程序开发实战 - Agenda

    CLI 命令行实用程序开发实战 Agenda 实验内容 实验过程 安装必要的包 初始化并添加相应指令 完善指令 register login entity中相应函数的实现 测试 实验内容 功能需求 设计一组命令完成 agenda 的管理 例
  • 利用python的matplotlib包绘制氢原子的径向分布函数

    to get the angular momentum of a oneparticle system import matplotlib pyplot as plt import numpy as np from scipy import
  • 华为OD机试 - 素数之积(Java)

    题目描述 RSA加密算法在网络安全世界中无处不在 它利用了极大整数因数分解的困难度 数据越大 安全系数越高 给定一个 32 位正整数 请对其进行因数分解 找出是哪两个素数的乘积 输入描述 一个正整数 num 0 lt num lt 2147
  • Springboot+SpringSecurity实现权限控制(二、用户登录认证)

    配置Security核心配置类 将WebSecurityConfig放在auth包下 右击鼠标 gt 点击Generate gt 点击Override Methods 选择下面的三个configure 禁用防护 http csrf disa