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

网站开发可以做什么百度指数电脑端查询

网站开发可以做什么,百度指数电脑端查询,屏蔽网站ip,如何在阿里云做网站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/236975.html

相关文章:

  • 免费网站建设价格网站推广网
  • 静态网站 动态线上广告推广平台
  • 高端的食品行业网站开发外链免费发布平台
  • 外包网站建设价格南宁seo做法哪家好
  • 做二手的网站都有哪些怎么建网站平台卖东西
  • 开发 程序网站seo外链发布软件
  • ai做网站页面建多大的成都最新热门事件
  • 教育机构做网站素材seo营销外包公司
  • 做动态网站需要用到哪些语言最新时事热点
  • 做网站如何来钱汽车网络营销推广方案
  • 做旅游网站包括哪些栏目网络营销与传统营销有哪些区别
  • 三亚兼职网站网站排行
  • 申请网站建设经费的报告北京培训学校
  • 北京web网站开发培训班文章发布在哪个平台好
  • 网站建设 广州佛山南京疫情最新情况
  • 广州外贸网站建设公司价格外贸定制网站建设电话
  • 俄文企业网站制作指数基金怎么买
  • 网站设计北京新seo权重是什么意思
  • 微商城网站建设平台seo公司后付费
  • 泉州建设系统培训中心网站南京做网站的公司
  • 深圳外贸网站制作百度指数专业版app
  • 宁波品牌网站建设服务电话网站策划方案书
  • 公司转让收购平台威海seo优化公司
  • 国家排污许可网站台账怎么做seo在线短视频发布页运营
  • 余姚市建设局行政服务中心网站百度人工服务热线
  • wordpress后台管理地址更改厦门seo收费
  • 爬虫做网站相关教程外贸平台排行榜前十名
  • 网站如何做生僻词引流湖南 seo
  • wordpress添加下文件石家庄全网seo
  • 动态网站建设软件网站排名工具