伙伴匹配(后端)-- 用户登录

2024-04-27 11:12
文章标签 登录 用户 匹配 伙伴

本文主要是介绍伙伴匹配(后端)-- 用户登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 登录逻辑设计
  • 登录业务代码实现
  • 用户登录态
    • 如何知道是哪个用户登录了?
    • cookie与session
  • 逻辑删除
    • 配置
    • 添加@TableLogic注解

(现在做单机登录) 后面修改为redis单点登录

登录逻辑设计

接收参数:用户接账户,密码
请求类型:post get一般用于数据查询,请求参数长度有限制,请求参数很长时不建议用get
请求体:json (还有rpc的情况)
返回值:用户信息(脱敏)
登录态(session)存放在了tomcat中,也可以存放到redis中

登录业务代码实现

 @Overridepublic User userLogin(String userAccount, String userPassword, HttpServletRequest request) {//1.账户,密码,校验码为空if (StringUtils.isAnyBlank(userAccount, userPassword)) {return null;}// 2.账户小于4位if (userAccount.length() < 4) {return null;}// 3.密码,校验码小于8位if (userPassword.length() < 8) {return null;}// 4.账户包含特殊字符(正则表达式)String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);if (matcher.find()) {return null;}//校验完成后,加密String encryptPassword = DigestUtils.md5DigestAsHex((SALT + userPassword).getBytes());// 6.账户重复,放在后面,可以节省查询次数,节省内存性能QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("userAccount", userAccount);queryWrapper.eq("userPassword", userPassword);User user = userMapper.selectOne(queryWrapper);if (user == null) {log.info("userPassword can not match userAccount");return null;}//用户信息脱敏User safetyUser = new User();safetyUser.setId(user.getId());safetyUser.setUsername(user.getUsername());safetyUser.setUserAccount(user.getUserAccount());safetyUser.setAvatarUrl(user.getAvatarUrl());safetyUser.setGender(user.getGender());safetyUser.setUserPassword(user.getUserPassword());safetyUser.setPhone(user.getPhone());safetyUser.setEmail(user.getEmail());safetyUser.setUserStatus(user.getUserStatus());safetyUser.setCreateTime(user.getCreateTime());//将用户信息保存到session中request.getSession().setAttribute(USER_LOGIN_STATE,safetyUser);return safetyUser;}

用户登录态

如何知道是哪个用户登录了?

基于session来实现登录,将登录信息存到session里面

cookie与session

cookie与seesion的定义

  • cookie是在客户端保留少量数据的技术,主要通过响应头向客户端响应一些客户端要保留的信息
  • session是在服务端保留更多数据的技术,主要通过HttpSession对象保存一些和客户端相关的信息
  • cookie和session配合记录请求状态

举例: 张三去银行办业务

  • 张三第一次去某个银行办业务,银行会为张三开户(Session),并向张三发放一张银行卡(cookie)
  • 张三后面每次去银行,就可以携带之间的银行卡(cookie),银行根据银行卡找到之前张三的账户(session)

工作原理

1682413051408.png

逻辑删除

mybatis-plus提供的功能,并不是真正的删除,而是给数据库的一个字段的值设置为0 还是 1来判断是否删除

配置

global-config:
db-config:logic-delete-field: isDelete # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

添加@TableLogic注解

在实体类数据库是否删除字段上面添加@TableLogic注解

这篇关于伙伴匹配(后端)-- 用户登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940354

相关文章

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Springboot中JWT登录校验及其拦截器实现方法

《Springboot中JWT登录校验及其拦截器实现方法》:本文主要介绍Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现... 目录前言一、JWT是什么?二、实现步骤1.引入Maven坐标2.获取Token3.JWT拦截器的实现4.

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot3匹配Mybatis3的错误与解决方案

《SpringBoot3匹配Mybatis3的错误与解决方案》文章指出SpringBoot3与MyBatis3兼容性问题,因未更新MyBatis-Plus依赖至SpringBoot3专用坐标,导致类冲... 目录SpringBoot3匹配MyBATis3的错误与解决mybatis在SpringBoot3如果

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us