第二节课,后端【注册】登录代码 & 校验

一、注册逻辑

二、代码写的位置

   I UserService.java 写业务逻辑的

2.1 代码1

2.1.1 注释生成

先按
/**
再按
回车

2.1.2 多补充一点

2.2 代码2 

Implement method 'userRegister'  

 # 在这里实现用户注册的逻辑,例如将用户名和密码存储到数据库中

2.2.1 自动进入userserive 实现类里面【此处是业务逻辑,写代码的地方】

2.2.2 补充完整

2.3 代码3

2.3.1 代码校验麻烦,添加插件

每个字段判断是否为空 & 是否等于 null

在SQL中,空(空字符串)不是NULL。

1)NULL表示一个字段没有值,是一种未知或不适用的状态,在SQL中,NULL不等同于0或空字符串,而是表示缺失值。

2)空(空字符串)表示一个字段的值为空,即有值但是没有内容,在SQL中,空字符串是一个有效的字符串,但不等同于NULL。

2.3.2 添加插件:

中央仓库

网址:

Maven Repository: apache common utils (mvnrepository.com)

本人

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

2.3.3 插件代码,放入 pom 里面的位置 【放再 start 后,因为,这是项目全过程都需要用到的依赖】

2.3.4 依赖安装完后,需刷新,即下载

2.4 代码 3 修改代码,重新写

【刚下载的依赖就是 lang3】

本人解释:

网址:

org.apache.commons.lang3下 StringUtils 工具类_org/apache/commons/lang3/stringutils-CSDN博客

2.5 代码 4

2.6 代码5 账户不能重复 【看网址理解】

网址:

QueryWrapper的详细使用方法_querywrapper 分页-CSDN博客

2.7 代码6 账户不能包含特殊字符 【第二节课,鱼皮接近尾声,发现错误】

copy 网址: 正则表达式

Java过滤特殊字符的正则表达式 - 精神领袖 - 博客园 (cnblogs.com)

 String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";  

本人理解

   // 账户不能包含特殊字符
        // m.find();//返回true
        String validPattern = "[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
        Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);
        if (matcher.find())
        {
            return -1;
        }


解释:
 Matcher matcher = Pattern.compile(validPattern).matcher(userAccount);


这段代码是使用Java的正则表达式库(Pattern和Matcher类)来匹配用户账户(userAccount)是否符合给定的正则表达式模式(validPattern)。

1、首先,通过调用Pattern类的compile方法,将validPattern编译成一个Pattern对象。
2、然后,使用Pattern对象的matcher方法,传入userAccount字符串,生成一个Matcher对象。
3、Matcher对象可以用来对userAccount进行各种正则表达式操作,例如查找、替换等。


解释:
 if (matcher.find())
//if  m.find();//返回true
// 说明有特殊字符,结果失败了,需重新输入

2.8 代码7  密码和校验密码相同

三、代码优化

3.1 解决性能浪费,【查询数据库 ,代码5 ,账户不能重复】

 移至最后

四、对密码进行加密(密码千万不要直接以明文存储到数据库中)

4.1 加密算法,类库

4.1.1 先写测试

网址:

java 密码加密_Java如何实现密码加密-CSDN博客

//2对密码进行盐值加密(加密算法MD5-特点:不可逆,相同内容加密结果也相同)

//2.1加密方式1(借助spring框架工具类DigestUtils)

//String newPassword=DigestUtils.md5DigestAsHex((salt+entity.getPassword()).getBytes());

加密成 16进制 【代码需更改为如下】

此处只做测试,看下这个代码的功能是我们想要的不,成功了,再放到下图去写

4.2 效果

五、向数据库插入用户数据

5.1 插入代码

六、补注入 :mapper

6.1 补

6.2 因为注入mapper,而改写代码

七、【不要使用这里的测试数据,部分有误】开始测试代码

7.1 开始测试代码

7.1.1 位置解释,为上一处

7.2 测试代码造数据

7.2.1 报错,debug

7.2.2 打断点调试

前面单击一下?

7.2.3 执行

7.2.4 按 F7 进入函数,即方法

7.2.5 按 F9 执行到下一个 断点

7.2.6 按F8 下一步,下一步

7.3 测试  userAccount

7.4 上门测试成功后,又换了

未换

【?】小乌龟,啥意思

这里表格还能刷新

换了

所有测试代码均以实现

八、 理解下测试代码

网址:

第二节课,后端登录代码 & 校验【本人操作】-CSDN博客

  • 32
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于您的第一个问题,我可以给您提供一些参考和思路,但是需要注意的是,具体实现可能需要根据您的具体需求进行调整和修改。 首先,您需要在Django中编写用户认证的业务逻辑和相关API接口,这可以使用Django自带的auth模块,在其中添加自定义的用户信息字段。同时,您需要编写前端页面,使用Vue来构建用户注册登录等功能页面,并进行前后端交互。 具体步骤可以如下: 1. 在Django中,使用auth模块创建用户模型,并添加自定义的用户信息字段。 ```python from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): # 添加自定义字段 pass ``` 2. 设置Django REST framework的认证类,实现用户注册登录等API接口。 ```python from rest_framework import views, status from rest_framework.response import Response from rest_framework.authentication import SessionAuthentication, BasicAuthentication from rest_framework.permissions import IsAuthenticated from django.contrib.auth import get_user_model, authenticate, login, logout User = get_user_model() class RegisterView(views.APIView): """用户注册接口""" def post(self, request): username = request.data.get('username') password = request.data.get('password') if not username or not password: return Response({'error': 'username and password are required.'}, status=status.HTTP_400_BAD_REQUEST) if User.objects.filter(username=username).exists(): return Response({'error': 'username already exists.'}, status=status.HTTP_400_BAD_REQUEST) user = User.objects.create_user(username=username, password=password) user.save() return Response({'status': 'ok'}, status=status.HTTP_201_CREATED) class LoginView(views.APIView): """用户登录接口""" def post(self, request): username = request.data.get('username') password = request.data.get('password') if not username or not password: return Response({'error': 'username and password are required.'}, status=status.HTTP_400_BAD_REQUEST) user = authenticate(request, username=username, password=password) if not user: return Response({'error': 'username or password is incorrect.'}, status=status.HTTP_401_UNAUTHORIZED) login(request, user) return Response({'status': 'ok'}, status=status.HTTP_200_OK) class LogoutView(views.APIView): """用户退出登录接口""" authentication_classes = [SessionAuthentication, BasicAuthentication] permission_classes = [IsAuthenticated] def post(self, request): logout(request) return Response({'status': 'ok'}, status=status.HTTP_200_OK) ``` 3. 在Vue中,使用Element UI等UI组件库,构建用户注册登录等功能页面,并使用axios等HTTP请求库向后端API接口发送相关请求。 ```html <template> <div> <el-form> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleRegister">注册</el-button> <el-button type="primary" @click="handleLogin">登录</el-button> <el-button type="primary" @click="handleLogout">退出</el-button> </el-form-item> </el-form> </div> </template> <script> import axios from 'axios'; export default { data() { return { form: { username: '', password: '', }, }; }, methods: { handleRegister() { axios.post('/api/register/', this.form).then(() => { this.$message.success('注册成功'); }).catch((error) => { this.$message.error(error.response.data.error); }); }, handleLogin() { axios.post('/api/login/', this.form).then(() => { this.$message.success('登录成功'); }).catch((error) => { this.$message.error(error.response.data.error); }); }, handleLogout() { axios.post('/api/logout/').then(() => { this.$message.success('退出成功'); }); }, }, }; </script> ``` 需要注意的是,以上代码仅供参考,实际实现还需要根据具体需求进行修改和调整,如密码加密、验证码校验、表单验证等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值