SpringBoot集成Spring Security(二)注册 、密码加密、修改密码
SpringBoot集成Spring Security(一)登录注销
写在前面
上一节创建了项目并且利用Spring Security完成了登录注销功能,这里继续说一下注册、密码加密和找回密码,代码注释较清晰。
一、web层
控制
StudentController.java
package com.jxnu.os.controller;import com.jxnu.os.model.RespBean;
import com.jxnu.os.model.Student;
import com.jxnu.os.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;/*** @author xiao*/
@RestController
@RequestMapping("/student")
public class StudentController {@AutowiredStudentService studentService;/*** 注册* @param student* @return*/@PostMapping("/register")public RespBean register(Student student) {if(studentService.register(student)){return RespBean.ok("注册成功",student);}else{return RespBean.error("注册失败,用户名已存在");}}/*** 修改密码* @param sno* @param password* @param rePassword* @return*/@PutMapping("/modifyPass")public RespBean modifyPass(String sno,String password,String rePassword) {if(studentService.modifyPass(sno,password,rePassword)){return RespBean.ok("修改成功");}else{return RespBean.error("修改失败,原密码错误");}}}
二、service层
注册时对密码进行加密,修改密码时则需先解密后验证
StudentService.java
package com.jxnu.os.service;import com.jxnu.os.mapper.StudentMapper;
import com.jxnu.os.model.Student;
import com.jxnu.os.utils.StudentUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;import java.util.List;/*** @author xiao*/
@Service
public class StudentService implements UserDetailsService {@AutowiredStudentMapper studentMapper;/*** 注册* @param student* @return*/public boolean register(Student student) {Student existUser = studentMapper.loadUserBySno(student.getUsername());if (existUser != null) {//如果用户名已存在return false;} else {BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();String encode = encoder.encode(student.getPassword());student.setPassword(encode);studentMapper.insert(student);return true;}}/*** 修改密码* @param sno* @param password* @param rePassword* @return*/public boolean modifyPass(String sno,String password,String rePassword) {Student student = studentMapper.loadUserBySno(sno);BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();if(encoder.matches(password,student.getPassword())) {String encode = encoder.encode(rePassword);rePassword = encode;studentMapper.modifyPass(sno,rePassword);return true;}else {return false;}}}
三、mapper层
StudentMapper.java
package com.jxnu.os.mapper;import com.jxnu.os.model.Student;
import org.apache.ibatis.annotations.Param;import java.util.List;/*** @author xiao*/
public interface StudentMapper {int insert(Student student);int modifyPass(String sno,String rePassword);
}
StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jxnu.os.mapper.StudentMapper"><resultMap id="BaseResultMap" type="com.jxnu.os.model.Student"><id column="id" property="id" jdbcType="INTEGER"/><result column="username" property="username" jdbcType="VARCHAR"/><result column="sno" property="sno" jdbcType="VARCHAR"/><result column="s_sex" property="s_sex" jdbcType="CHAR"/><result column="t_id" property="t_id" jdbcType="INTEGER"/><result column="password" property="password" jdbcType="VARCHAR"/></resultMap><update id="modifyPass" parameterType="com.jxnu.os.model.Student">update student set password = #{rePassword} where sno=#{sno}</update><insert id="insert" parameterType="com.jxnu.os.model.Student">insert into student (username,password)values (#{username,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR})</insert></mapper>
SpringBoot集成Spring Security(二)注册 、密码加密、修改密码相关推荐
- SpringBoot集成Spring Security(一)登录注销
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! SpringBoot集成Spring Security(二)注册 .密码加密.修改密码 写在前面 Spring S ...
- SpringBoot集成Spring Security —— 第二章自动登录
文章目录 一.修改login.html 二.两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现 三.运行程序 在上一章:SpringBoot集成S ...
- SpringBoot集成Spring Security(2)——自动登录
在上一章:SpringBoot集成Spring Security(1)--入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html 二.两种实现方式 2 ...
- SpringBoot 集成 Spring Security
Spring Security Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.它实际上是保护基于spring的应用程序的标准. Spring Security是一个 ...
- springboot集成Spring Security oauth2(八)
由于公司项目需要,进行SpringBoot集成Spring Security oauth2,几乎搜寻网上所有大神的案例,苦苦不能理解,不能完全OK. 以下是借鉴各大神的代码,终于demo完工,请欣赏 ...
- SpringBoot集成Spring Security(1)——入门程序
因为项目需要,第一次接触 Spring Security,早就听闻 Spring Security 功能强大但上手困难,学习了几天出入门道,特整理这篇文章希望能让后来者少踩一点坑(本文附带实例程序,请 ...
- springboot集成spring security实现登录和注销
文章目录 一.导入坐标 二.Users实体类及其数据库表的创建 三.controller,service,mapper层的实现 四.核心–编写配置文件 五.页面的实现 运行结果 一.导入坐标 < ...
- SpringBoot集成Spring Security(3)——异常处理
源码地址:https://github.com/jitwxs/blog_sample 文章目录 一.常见异常 二.源码分析 三.处理异常 不知道你有没有注意到,当我们登陆失败时候,Spring sec ...
- springboot集成spring security安全框架入门篇
一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...
最新文章
- 吴恩达深度学习笔记(114)-RNN梯度消失问题详解
- windows 下XAMPP 使用Nginx替代apache作为服务器
- 使用 Apache MINA 开发高性能网络应用程序
- book: Effective Java
- 四年级信息技术认识计算机,四年级信息技术第三课信息工具知多少
- 3.4.3 深度探索linux,3.2.4 vmlinux.bin的构建过程(3)
- java反射方法调用_Java反射(3)调用方法
- php 量 高并发 nosql,nosql - 高并发下Apache+mongodb的php驱动不稳定
- 3分钟看懂 Linux 磁盘划分
- STM32程序下载的三种方式
- 广义预测控制 matlab,基于MATLAB的广义预测控制设计方法.pdf
- 制作PCB的基本设计流程;
- 百科人物爬虫-属性解析
- 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(3)
- 用python的xlwings模块实现excel工作表批量隐藏和取消隐藏
- 【笔记】HEFT——面向异构计算的高性能、低复杂度任务调度
- 怎样才能叫高级程序员?
- js获取前后三个月的时间戳
- APM一些疑难故障的处理
- i9500android操作系统跑流量,四大手机安全软件谁更省流量?360手机卫士完胜
热门文章
- LeetCode 758. 字符串中的加粗单词(Trie树)
- python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件
- 【Python基础知识-pycharm版】第四节-元组
- Crontab定时任务访问url实例
- Python面试必须要看的15个问题
- 全球仅3000人通过的TensorFlow开发人员认证到底有多香!
- 万能的BERT连文本纠错也不放过
- 论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法
- 论文小综 | Using External Knowledge on VQA
- 阿里内推算法岗位编程笔试题