8、集成SpringSecurity安全框架---登录请求放行配置

news/2024/9/28 15:49:15
@Configuration
public class SecurityConfig {// 创建 BCryptPasswordEncoder 注入容器,密码加密
    @Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}// 登录时调用一次AuthenticationManager.authenticate 执行一次校验// authenticate
    @Beanpublic AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {return config.getAuthenticationManager();}// 登录请求放行配置// SecurityFilterChain 一个表示安全过滤器链的对象
    @Beanpublic SecurityFilterChain filterChain(HttpSecurity http) throws Exception{// 关闭csrf机制http.csrf(csrf -> csrf.disable());/*** 配置请求拦截方式,* requestMatchers 表示某个请求不需要进行身份校验* authorizeHttpRequests 配置请求的授权规则,.anyRequest().authenticated() 表示任何请求都需要经过身份验证* permitAll 随意访问*/http.authorizeHttpRequests(auth -> auth.requestMatchers("/user/login").permitAll().anyRequest().authenticated());return http.build();}
}

service

@Service
public class LoginServiceImpl implements LoginService {@Autowiredprivate AuthenticationManager authenticationManager;@Overridepublic String login(SysUserinfo sysUserinfo) {//用户认证// 1. 封装 authentication 对象UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(sysUserinfo.getUsername(),sysUserinfo.getPassword());// 2. 进行校验Authentication authentication = authenticationManager.authenticate(authenticationToken);//认证没有通过if (Objects.isNull(authentication)){throw new RuntimeException("登录失败");}//认证通过,获取放入的用户信息LoginUser loginUser = (LoginUser) authentication.getPrincipal();// 生成JWT,使用fastjson方法,把对象转为字符串String jsonString = JSON.toJSONString(loginUser);// 调用jwt工具类,生成jwt令牌String jwt = JwtUtil.createJWT(jsonString, null);return jwt;}
}

controller

@RestController
@RequestMapping("/user")
public class LoginController {@Autowiredprivate LoginService loginService;@PostMapping("/login")public ResultVO login(@RequestBody SysUserinfo sysUserinfo) {String jwt = loginService.login(sysUserinfo);if (StringUtils.hasLength(jwt)){// ResultVO 自定义响应类return ResultVO.success(jwt);}return ResultVO.fail("err");}}

测试

使用postman,点击body,选用json格式,输入用户名密码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/65803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

javascript 数组对象解构

传统的写法不好记忆,书写麻烦,此时可以使用结构赋值的方法让代码更加简洁。 数组结构是将数组中的单元值快速批量赋值给一系列变量的简介语法。 变量的顺序对应数组单元值位置一次进行赋值操作。 如下:应用一:交换两个变量Js前面有那种情况需要加分号。(不加分号 解析器认…

基于python的结对作业

github项目地址这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230团队成员1 何昌洲 3122004737团队成员2 郑玮源 3122004760这个作业的目标 用python语言结对合作完…

代码随想录算法训练营第三天 | 熟悉链表

链表的存储方式数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。 链表是通过指针域的指针链接在内存中各个节点。 所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。链表的定义 template <typ…

智慧工地火焰烟火识别检测系统

智慧工地火焰烟火识别检测系统通过深度学习技术,智慧工地火焰烟火识别检测系统对工地工厂区域自动发现浓烟和烟火迹象,立即抓拍告警并进行存档同步违规异常烟火信息回传给后台平台提醒后台人员及时处理。智慧工地火焰烟火识别检测系统可以减少因人工因素造成的乱报和瞒报现象…

车辆逆行识别预警系统

车辆逆行识别预警系统通过Python计算机算法技术,车辆逆行识别预警系统可以7*24小时不间断自动检测监控中道路来往行驶车辆出现逆行行为及时预警存档,同步将车辆违规行为信息回传给后台监控分析平台提醒值班人员及时处理预警。车辆逆行识别预警系统通过Opencv网络模型AI技术有…

信息学奥赛复赛复习06-CSP-J2020-02直播获奖-向上取整、向下取整、整数除法、最大值、最小值、计数排序

PDF文档公众号回复关键字:202409281 2020 CSP-J 题目1 优秀的拆分 [题目描述] NOI2130 即将举行。为了增加观赏性,CCF 决定逐一评出每个选手的成绩,并直播即时的获奖分数线。本次竞赛的获奖率为 w%,即当前排名前 w% 的选手的最低成绩就是即时的分数线 更具体地,若当前已评出…

渣土车智能识别系统

渣土车智能识别系统通过深度学习算法,渣土车智能识别系统对禁止渣土车通行现场画面中含有渣土车时进行自动识别监测,渣土车智能识别系统监测到监控画面中出现渣土车时,立即抓拍告警并同步提醒后台人员及时制止。渣土车智能识别系统促进后台日常“技防”智能化监管替代“人防…

[计算机网络]HTTP请求

HTTP 协议,建立在 TCP 连接基础之上的。HTTP 是一种允许浏览器向服务器获取资源的协议,是 Web 的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如 HTML 文件、CSS 文件、JavaScript 文件、图片、视频等。此外,HTTP 也是浏览器使用最广的协议。 HTTP请求发起流程 …