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(二)注册 、密码加密、修改密码相关推荐

  1. SpringBoot集成Spring Security(一)登录注销

    同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! SpringBoot集成Spring Security(二)注册 .密码加密.修改密码 写在前面 Spring S ...

  2. SpringBoot集成Spring Security —— 第二章自动登录

    文章目录 一.修改login.html 二.两种实现方式 2.1 Cookie 存储 2.2 数据库存储 2.2.1 基本原理 2.2.2 代码实现 三.运行程序 在上一章:SpringBoot集成S ...

  3. SpringBoot集成Spring Security(2)——自动登录

    在上一章:SpringBoot集成Spring Security(1)--入门程序中,我们实现了入门程序,本篇为该程序加上自动登录的功能. 文章目录 一.修改login.html 二.两种实现方式 2 ...

  4. SpringBoot 集成 Spring Security

    Spring Security Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架.它实际上是保护基于spring的应用程序的标准. Spring Security是一个 ...

  5. springboot集成Spring Security oauth2(八)

    由于公司项目需要,进行SpringBoot集成Spring Security oauth2,几乎搜寻网上所有大神的案例,苦苦不能理解,不能完全OK. 以下是借鉴各大神的代码,终于demo完工,请欣赏 ...

  6. SpringBoot集成Spring Security(1)——入门程序

    因为项目需要,第一次接触 Spring Security,早就听闻 Spring Security 功能强大但上手困难,学习了几天出入门道,特整理这篇文章希望能让后来者少踩一点坑(本文附带实例程序,请 ...

  7. springboot集成spring security实现登录和注销

    文章目录 一.导入坐标 二.Users实体类及其数据库表的创建 三.controller,service,mapper层的实现 四.核心–编写配置文件 五.页面的实现 运行结果 一.导入坐标 < ...

  8. SpringBoot集成Spring Security(3)——异常处理

    源码地址:https://github.com/jitwxs/blog_sample 文章目录 一.常见异常 二.源码分析 三.处理异常 不知道你有没有注意到,当我们登陆失败时候,Spring sec ...

  9. springboot集成spring security安全框架入门篇

    一. :spring security的简介 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下 ...

最新文章

  1. 吴恩达深度学习笔记(114)-RNN梯度消失问题详解
  2. windows 下XAMPP 使用Nginx替代apache作为服务器
  3. 使用 Apache MINA 开发高性能网络应用程序
  4. book: Effective Java
  5. 四年级信息技术认识计算机,四年级信息技术第三课信息工具知多少
  6. 3.4.3 深度探索linux,3.2.4 vmlinux.bin的构建过程(3)
  7. java反射方法调用_Java反射(3)调用方法
  8. php 量 高并发 nosql,nosql - 高并发下Apache+mongodb的php驱动不稳定
  9. 3分钟看懂 Linux 磁盘划分
  10. STM32程序下载的三种方式
  11. 广义预测控制 matlab,基于MATLAB的广义预测控制设计方法.pdf
  12. 制作PCB的基本设计流程;
  13. 百科人物爬虫-属性解析
  14. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(3)
  15. 用python的xlwings模块实现excel工作表批量隐藏和取消隐藏
  16. 【笔记】HEFT——面向异构计算的高性能、低复杂度任务调度
  17. 怎样才能叫高级程序员?
  18. js获取前后三个月的时间戳
  19. APM一些疑难故障的处理
  20. i9500android操作系统跑流量,四大手机安全软件谁更省流量?360手机卫士完胜

热门文章

  1. LeetCode 758. 字符串中的加粗单词(Trie树)
  2. python文件流读取二进制_Python使用web.py从POST请求中提取二进制文件
  3. 【Python基础知识-pycharm版】第四节-元组
  4. Crontab定时任务访问url实例
  5. Python面试必须要看的15个问题
  6. 全球仅3000人通过的TensorFlow开发人员认证到底有多香!
  7. 万能的BERT连文本纠错也不放过
  8. 论文浅尝 - ACL2022 | 面向推理阅读理解的神经符号方法
  9. 论文小综 | Using External Knowledge on VQA
  10. 阿里内推算法岗位编程笔试题