概要

实现用户登录功能

编辑error.go文件

$  vi ~/book/user/api/internal/logic/error.go

增加一些错误类型

errorUsernameUnRegister = shared.NewDefaultError("用户未注册")
errorIncorrectPassword  = shared.NewDefaultError("用户密码错误")

填充登录逻辑代码

$ vi ~/book/user/api/internal/logic/loginlogic.go

增加登录逻辑

向Login方法中填充注册逻辑

// 忽略逻辑校验
userInfo, err := l.svcCtx.UserModel.FindOneByName(req.Username)
switch err {
case nil:
  if userInfo.Password != req.Password {
    return nil, errorIncorrectPassword
  }
  return &types.UserReply{
    Id:       userInfo.Id,
    Username: userInfo.Name,
    Mobile:   userInfo.Mobile,
    Nickname: userInfo.Nickname,
    Gender:   userInfo.Gender,
  }, nil
case model.ErrNotFound:
  return nil, errorUsernameUnRegister
default:
  return nil, err
}

访问登录协议

$ curl -i -X POST \
  http://127.0.0.1:8888/user/login \
  -H 'cache-control: no-cache' \
  -H 'content-type: application/json' \
  -d '{
  "username":"admin",
  "password":"666666"
}'

得到响应码为200则代表登录成功,并且返回了用户信息