密码加密
密码加密用到了一个go内置的包
crypto
,不需要安装,官网地址在这里,代码也很简单,通过使用GORM的钩子函数,可以直接进行哈希,同样的,在models/User.go
下:
// 密码加密
func ScryptPw(password string) string {
const cost = 10
HashPw, err := bcrypt.GenerateFromPassword([]byte(password), cost)
if err != nil {
log.Fatal(err)
}
return string(HashPw)
}
// BeforeCreate 密码加密&权限控制
func (u *User) BeforeCreate(_ *gorm.DB) (err error) {
u.Password = ScryptPw(u.Password)
u.Role = 2
return nil
}
分类CURD
直接复用代码即可,没啥难度,就不放轮子了。
文章CURD
同样的,复用代码,只是在查询时,需要用到外键的关联查询。
// 分类下所有文章
func GetCateArt(cid int, Size int, Page int)([]Article, int){
var cateArtList []Article
err = db.Preload("Category").Limit(Size).Offset((Page - 1) * Size).Where("cid=?", cid).Find(&cateArtList).Error
if err != nil{
return nil,errmsg.ERROR_CATE_NOT_EXIST
}
return cateArtList, errmsg.SUCCSE
}
// 单个文章
func ArticleInfo(id int) (Article, int) {
var art Article
err = db.Preload("Category").Where("id=?",id).First(&art).Error
if err != nil{
return art, errmsg.ERROR_ART_NOT_EXIST
}
return art, errmsg.SUCCSE
}
大部分都是重复的代码,改一下结构体即可,这个应该没啥难度,就不放一大堆无效代码了。
未完待续….
- Post link: https://www.godhearing.cn/gin-vue-da-jian-ge-ren-bo-ke-3/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.