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

一个很正常的目录前情回顾数据传输对象(DTO)创建登录和注册功能的DTOUserLoginDTOUserRegisterDTO修改UserController修改UserService用户初始权限的设置初始权限的设置添加初始权限和查询用户角色授予初始权限启用事物管理改进用户登录模块保护用户的隐私信息!前情回顾在前一篇博客我们成功的编写了登录与注册的接口,但是还存在着一些问题,这篇博客我们将会更深入的对登录与注册的进行讲解。数据传输对象(DTO)我们在登录或者注册时,其实只用到了User对象的某些属性
摘要由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 
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值