当前位置: 首页 > wzjs >正文

网站开发可以做什么潍坊住房公积金管理中心

网站开发可以做什么,潍坊住房公积金管理中心,c 做网站,松江新桥专业网站建设1.简述 用于记录在go-zero的后端项目中如何添加jwt中间件鉴权 2.流程 配置api.yaml Auth:AccessSecret: "secret_key"AccessExpire: 604800config中添加Auth结构体 Auth struct {AccessSecret stringAccessExpire int64 }types定义jwt token的自定义数据结构&#…

1.简述

用于记录在go-zero的后端项目中如何添加jwt中间件鉴权

2.流程

配置api.yaml

Auth:AccessSecret: "secret_key"AccessExpire: 604800

config中添加Auth结构体

Auth struct {AccessSecret stringAccessExpire int64
}

types定义jwt token的自定义数据结构,这里以用户登录信息的UserClaims做例子,在types中新建userclaims.go文件

type UserClaims struct {UserUID int64  `json:"user_uid"`Role    string `json:"role"`jwt.RegisteredClaims
}

中间件方法:在middleware文件夹下建立jwtmiddleware.go用来储存创立和返回jwt中间件

1.jwt中间件结构体,包含一个secret字段用来实现jwt验签

// jwt中间件结构体,包含一个secret字段,用于jwt验签
type JWTMiddleware struct {Secret string
}

2.创建jwtmiddleware的实例

// 工厂方法,用于创建和返回JWTMiddleware实力
func NewJWTMiddleware(secret string) *JWTMiddleware {return &JWTMiddleware{Secret: secret}
}

3.中间件签名,接收一个函数handler,获取请求头中的token并解析,然后送入另一个handler

// 中间件签名,接受一个下一个处理的函数,返回另一个处理函数
func (m *JWTMiddleware) Handle(next http.HandlerFunc) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {//获取请求头中的tokentokenStr := r.Header.Get("Authorization")if tokenStr == "" {http.Error(w, "Missing token", http.StatusUnauthorized)return}//解析token并绑定自定义结构体UserClaimstoken, err := jwt.ParseWithClaims(tokenStr, &types.UserClaims{}, func(token *jwt.Token) (interface{}, error) {return []byte(m.Secret), nil})//检查是否有效if err != nil || !token.Valid {http.Error(w, "Invalid token", http.StatusUnauthorized)return}// 将解析结果保存进 contextif claims, ok := token.Claims.(*types.UserClaims); ok {ctx := context.WithValue(r.Context(), "user_uid", claims.UserUID)ctx = context.WithValue(ctx, "role", claims.Role)r = r.WithContext(ctx)}next(w, r)}
}

servicecontext中注册并初始化jwt中间件


type ServiceContext struct {Config        config.ConfigDB            *gorm.DBUserModel     model.IUserModelJWTMiddleware *middleware.JWTMiddleware
}func NewServiceContext(c config.Config) *ServiceContext {db, err := gorm.Open(mysql.Open(c.Mysql.DataSource), &gorm.Config{})if err != nil {panic("connect failed : " + err.Error())}_ = db.AutoMigrate(&model.User{},&model.Post{},&model.Comment{},&model.Like{},&model.Report{},&model.Section{},&model.SearchModel{},&model.InstallationStatus{})return &ServiceContext{Config:        c,DB:            db,JWTMiddleware: middleware.NewJWTMiddleware(c.Auth.AccessSecret),}}

routes中给要使用jwt的api进行包装(这里还没写需要用的api,大概语法如下)

//初始化中间件
jwtMW := middleware.NewJWTMiddleware(secret_key)
//包装需要用的api
server.AddRoutes([]rest.Route{{Method:  http.MethodPost,Path:    "/api/user_info",Handler: jwtMW.Handle(GetUserInfo(user_uid)),},},)
http://www.dtcms.com/wzjs/294245.html

相关文章:

  • 东莞清溪镇做网站公司链接提交
  • 保定哪有做网站的seo关键词快速排名前三位
  • 好用的手机网站主页厦门百度推广排名优化
  • 商丘做网站的公司贺州seo
  • 问答类网站怎么做免费外链网盘
  • 网站建设怎么做本周新闻热点
  • 政府网站建设程序什么是网站外链
  • web前端做营销类企业网站电商运营主要工作内容
  • 沧州网站建设价格网址查询域名解析
  • 湖北手机版建站系统信息全网搜索
  • 经营性网站备案网武汉搜索排名提升
  • 平板电脑 做网站开发seo优化方案
  • 做网站哪些公司seo的优缺点
  • 邯郸哪家公司做企业网站比较专业灵感关键词生成器
  • 沈阳seo团队优化营商环境工作总结
  • 中山网站制作公司武汉seo网站管理
  • 长沙望城区政府门户网站搜索引擎营销的名词解释
  • 网站开发和测试舟山百度seo
  • 阳谷聊城做网站学生制作个人网站
  • web程序设计asp.net实用网站开发课后上机操作题答案网络营销的四种形式
  • 眼科医院网站优化服务商企业网络推广软件
  • 做购物网站是怎么链接银行百度小说风云榜首页
  • 小说网站源码带采集百度搜索引擎seo
  • 网络设计过程seo店铺描述
  • 温州最便宜网站建设深圳在线制作网站
  • 江苏易销 网站建设云南百度公司
  • wordpress设置教程seowhy培训
  • 天津品牌网站建设公司百度账号管理
  • 全国做网站找哪家好郴州seo网络优化
  • 搜索引擎营销的主要模式湖南有实力seo优化