1 Star 0 Fork 0

肖金光/goclean

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
model.go 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
xiaojg-mbp 提交于 2024-01-10 15:40 . go11补充用户节点
package user
import (
"gitee.com/aviptle/goclean/go11jin/vblog01/common"
"github.com/rs/xid"
"golang.org/x/crypto/bcrypt"
)
func NewToken(username string) *Token {
return &Token{
Meta: common.NewMate(),
Username: username,
// 随机字符串,没有任何含义
AccessToken: xid.New().String(),
}
}
type Token struct {
*common.Meta
// JWT
AccessToken string `json:"token"`
// 用户的名称
Username string `json:"username"`
}
func (t *Token) TableName() string {
return "tokens"
}
func NewDefaultUser() *User {
return NewUser(NewCreateUserRequest())
}
func NewUser(req *CreateUserRequest) *User {
return &User{
Meta: common.NewMate(),
CreateUserRequest: req,
}
}
type User struct {
*common.Meta
*CreateUserRequest
}
func (u *User) TableName() string {
return "users"
}
func (u *User) String() string {
return common.ToJSON(u)
}
// 将明文密码变成一个Hash
// 密码 ---> hash 是一一对应, 彩虹表: hash ---> pass
// 生成是很少这样方式的, 加盐
//
// password ---> bash
// salt.password --> salt.hash
// password + salt ---> salt.hash == salt/password
func (u *User) BuildHashedPassword() error {
// h := sha1.New()
// _, err := h.Write([]byte(u.Password))
// if err != nil {
// return err
// }
// hd := h.Sum(nil)
// // base64 编码, []byte是二进制数据, 不一定可以转换成字符串
// u.Password = base64.StdEncoding.EncodeToString(hd)
// 专门用户Password hash的方法
hp, err := bcrypt.GenerateFromPassword([]byte(u.Password), 10)
if err != nil {
return err
}
u.Password = string(hp)
return nil
}
func (u *User) CheckPassword(planPassword string) error {
return bcrypt.CompareHashAndPassword([]byte(u.Password), []byte(planPassword))
}
func NewCreateUserRequest() *CreateUserRequest {
return &CreateUserRequest{}
}
type CreateUserRequest struct {
Username string `json:"username" validate:"required"`
Password string `json:"password" validate:"required"`
}
func (r *CreateUserRequest) Validate() error {
return common.Validate(r)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/aviptle/goclean.git
git@gitee.com:aviptle/goclean.git
aviptle
goclean
goclean
36d29c10b753

搜索帮助