从零开始的SpringBoot前后端分离入门级项目(五)

本文详细介绍了如何在SpringBoot项目中实现登录注册功能,包括创建DTO对象减少数据冗余,设置用户初始权限,启用事务管理确保操作一致性。同时,为保护用户隐私,使用BCryptPasswordEncoder对密码进行加密。通过这些改进,项目中的用户管理模块更加完善。
摘要由CSDN通过智能技术生成

前情回顾

在前一篇博客我们成功的编写了登录与注册的接口,但是还存在着一些问题,这篇博客我们将会更深入的对登录与注册的进行讲解。

数据传输对象(DTO)

我们在登录或者注册时,其实只用到了User对象的某些属性,在访问别的用户时也不该把别的用户的密码等字段给查询出来,这时候如果我们全都使用User对象则会产生部分冗余的字段,这些冗余的部分就如我们前面说过的一样会降低数据传输的效率,所以我们首先从这里入手,创建出不同情形下所需要用到的DTO。

创建登录和注册功能的DTO

UserLoginDTO

用户登录时我们只需要用户输入用户名和密码,所以UserLoginDTO中仅有两个字段:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserLoginDTO {
   
    @NotNull(message = "账号不允许为空")
    private String username;
    @NotNull(message = "密码不允许为空")
    private String password;
}

而注册时我们只希望用户去填写用户名、密码、昵称即可完成注册:

UserRegisterDTO

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserRegisterDTO {
   
    @NotNull(message = "用户名不允许为空")
    private String username;
    @NotNull(message = "密码不允许为空")
    private String password;
    @NotNull(message = "昵称不允许为空")
    private String nickname;
}

完成了两个字段的编写之后我们就要去Controller层以及Service层对我们的代码进行修改,将原本接受的User对象转为相应的DTO对象

修改UserDao

    /**
     * 通过登录的账号查询是否存在该用户
     *
     * @param loginName 登录名,可能是username也可能是email
     * @return 返回用户密码
     */
    @Select("SELECT id,password FROM tb_user WHERE username = #{loginName}")
    User userLogin(@Param("loginName") String loginName);

修改UserController

	@PostMapping("/register")
    public CommonResult<String> register(@RequestBody UserRegisterDTO urDTO) {
   
        userService.userRegister(urDTO);
        return new CommonResult<>(20000, "OK", "注册成功");
    }

    @PostMapping("/login")
    public CommonResult<String> login(@RequestBody UserLoginDTO ulDTO) {
   
        String res = userService.userLogin(ulDTO);
        return new CommonResult<>(20000, "OK", res);
    }

修改UserService

    public void userRegister
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值