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

2017网站开发工资WordPress发表评论自定义

2017网站开发工资,WordPress发表评论自定义,中国互联网协会是国企吗,怎嘛做网站1.每一行代码都有详细注释#xff0c;解释了其功能和作用。这些注释可以帮助你理解代码如何工作#xff0c;特别是在处理用户登录、生成 JWT、验证 JWT 和返回用户信息的过程中。 package main // 指定这个文件是一个可执行程序import (fmt …1.每一行代码都有详细注释解释了其功能和作用。这些注释可以帮助你理解代码如何工作特别是在处理用户登录、生成 JWT、验证 JWT 和返回用户信息的过程中。  package main // 指定这个文件是一个可执行程序import (fmt // 标准库包用于格式化字符串和输出到控制台github.com/dgrijalva/jwt-go // 第三方库用于处理 JWTgithub.com/gin-gonic/gin // 第三方库用于构建 Web APInet/http // 标准库包提供 HTTP 客户端和服务器实现time // 标准库包提供时间的基本操作 )var jwtKey []byte(your_secret_key) // 用于签名 JWT 的密钥// Claims 定义了包含用户信息的自定义 JWT 结构 type Claims struct {Identity int json:identity // 用户 IDjwt.StandardClaims // 域包含 JWT 标准的声明如过期时间、发布者等 }func main() {r : gin.Default() // 创建一个默认的 Gin 路由器实例r.POST(/login, login) // 定义 POST 方法的 /login 路由处理用户登录请求r.GET(/user, authenticate, getUserId) // 定义 GET 方法的 /user 路由先进行用户验证再获取用户 ID// 生成一个有效的 JWT token 并打印出来generateAndPrintToken()r.Run(:8080) // 启动服务器监听端口 8080 }// login 处理用户登录请求生成 JWT token 并返回给客户端 func login(c *gin.Context) {identity : 135 // 模拟用户的 ID// 创建包含用户 ID 和过期时间的 JWT claimsexpirationTime : time.Now().Add(5 * time.Minute) // 设置 token 的过期时间为当前时间的 5 分钟后claims : Claims{Identity: identity, // 设置用户的 IDStandardClaims: jwt.StandardClaims{ExpiresAt: expirationTime.Unix(), // 设置 JWT 的过期时间},}// 创建 JWT tokentoken : jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // 使用 HS256 签名方法创建 JWTtokenString, err : token.SignedString(jwtKey) // 使用密钥签名生成 JWTif err ! nil {c.JSON(http.StatusInternalServerError, gin.H{error: 无法创建token}) // 如果签名失败返回 500 错误return}// 返回 token 给客户端c.JSON(http.StatusOK, gin.H{token: tokenString}) }// authenticate 中间件验证请求是否携带有效的 JWT token func authenticate(c *gin.Context) {tokenString : c.GetHeader(Authorization) // 从请求头中获取 Authorization 字段的值// 解析 tokenclaims : Claims{}token, err : jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {return jwtKey, nil // 返回用于签名的密钥})if err ! nil || !token.Valid { // 如果解析或验证失败c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{error: 无效的token}) // 中止请求并返回 401 错误return}// 将 claims 保存到上下文中以便后续处理使用c.Set(claims, claims)c.Next() // 继续处理下一个处理函数 }// getUserId 从上下文中提取用户 ID 并返回给客户端 func getUserId(c *gin.Context) {data : ExtractClaims(c) // 从上下文中提取 claimsif data nil {fmt.Println(fmt.Sprintf(%s [WARNING] %s %s GetUserId 缺少 identity, time.Now().Format(time.RFC3339), c.Request.Method, c.Request.URL.Path))c.JSON(http.StatusUnauthorized, gin.H{error: 无法获取用户ID}) // 如果没有提取到 claims返回 401 错误return}//identity : data.Identity // 获取用户 ID//c.JSON(http.StatusOK, gin.H{userId: identity}) // 返回用户 ID 给客户端c.JSON(http.StatusOK, gin.H{data: data}) // 返回用户 ID 给客户端 }// ExtractClaims 从上下文中提取 JWT claims func ExtractClaims(c *gin.Context) *Claims {claims, exists : c.Get(claims) // 从上下文中获取 claimsif !exists {return nil // 如果 claims 不存在返回 nil}return claims.(*Claims) // 返回 claims }// generateAndPrintToken 生成一个新的 JWT token 并打印到控制台 func generateAndPrintToken() {identity : 135 // 模拟用户的 ID// 创建包含用户 ID 和过期时间的 JWT claimsexpirationTime : time.Now().Add(5 * time.Minute) // 设置 token 的过期时间为当前时间的 5 分钟后claims : Claims{Identity: identity, // 设置用户的 IDStandardClaims: jwt.StandardClaims{ExpiresAt: expirationTime.Unix(), // 设置 JWT 的过期时间},}// 创建 JWT tokentoken : jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // 使用 HS256 签名方法创建 JWTtokenString, err : token.SignedString(jwtKey) // 使用密钥签名生成 JWTif err ! nil {fmt.Println(无法创建token:, err) // 如果签名失败打印错误return}fmt.Println(生成的token:, tokenString) // 打印生成的 token }2.好的我们可以将代码分为两个部分一个处理用户登录并生成 JWT token另一个验证 JWT token 并返回用户信息。以下是详细分类和注释 1用户登录部分 package main // 指定这个文件是一个可执行程序import (fmt // 标准库包用于格式化字符串和输出到控制台net/http // 标准库包提供 HTTP 客户端和服务器实现time // 标准库包提供时间的基本操作github.com/dgrijalva/jwt-go // 第三方库用于处理 JWTgithub.com/gin-gonic/gin // 第三方库用于构建 Web API )var jwtKey []byte(your_secret_key) // 用于签名 JWT 的密钥// Claims 定义了包含用户信息的自定义 JWT 结构 type Claims struct {Identity int json:identity // 用户 IDjwt.StandardClaims // 域包含 JWT 标准的声明如过期时间、发布者等 }func main() {r : gin.Default() // 创建一个默认的 Gin 路由器实例r.POST(/login, login) // 定义 POST 方法的 /login 路由处理用户登录请求r.GET(/user, authenticate, getUserId) // 定义 GET 方法的 /user 路由先进行用户验证再获取用户 ID// 生成一个有效的 JWT token 并打印出来generateAndPrintToken()r.Run(:8080) // 启动服务器监听端口 8080 }// 用户登录部分处理用户登录请求生成 JWT token 并返回给客户端 func login(c *gin.Context) {identity : 135 // 模拟用户的 ID// 创建包含用户 ID 和过期时间的 JWT claimsexpirationTime : time.Now().Add(5 * time.Minute) // 设置 token 的过期时间为当前时间的 5 分钟后claims : Claims{Identity: identity, // 设置用户的 IDStandardClaims: jwt.StandardClaims{ExpiresAt: expirationTime.Unix(), // 设置 JWT 的过期时间},}// 创建 JWT tokentoken : jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // 使用 HS256 签名方法创建 JWTtokenString, err : token.SignedString(jwtKey) // 使用密钥签名生成 JWTif err ! nil {c.JSON(http.StatusInternalServerError, gin.H{error: 无法创建token}) // 如果签名失败返回 500 错误return}// 返回 token 给客户端c.JSON(http.StatusOK, gin.H{token: tokenString}) }// generateAndPrintToken 生成一个新的 JWT token 并打印到控制台 // 仅用于辅助测试在实际应用中可能不会使用 func generateAndPrintToken() {identity : 135 // 模拟用户的 ID// 创建包含用户 ID 和过期时间的 JWT claimsexpirationTime : time.Now().Add(5 * time.Minute) // 设置 token 的过期时间为当前时间的 5 分钟后claims : Claims{Identity: identity, // 设置用户的 IDStandardClaims: jwt.StandardClaims{ExpiresAt: expirationTime.Unix(), // 设置 JWT 的过期时间},}// 创建 JWT tokentoken : jwt.NewWithClaims(jwt.SigningMethodHS256, claims) // 使用 HS256 签名方法创建 JWTtokenString, err : token.SignedString(jwtKey) // 使用密钥签名生成 JWTif err ! nil {fmt.Println(无法创建token:, err) // 如果签名失败打印错误return}fmt.Println(生成的token:, tokenString) // 打印生成的 token } 2返回用户信息部分 // authenticate 中间件验证请求是否携带有效的 JWT token // 适用于返回用户信息的部分 func authenticate(c *gin.Context) {tokenString : c.GetHeader(Authorization) // 从请求头中获取 Authorization 字段的值// 解析 tokenclaims : Claims{}token, err : jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {return jwtKey, nil // 返回用于签名的密钥})if err ! nil || !token.Valid { // 如果解析或验证失败c.AbortWithStatusJSON(http.StatusUnauthorized, gin.H{error: 无效的token}) // 中止请求并返回 401 错误return}// 将 claims 保存到上下文中以便后续处理使用c.Set(claims, claims)c.Next() // 继续处理下一个处理函数 }// getUserId 从上下文中提取用户 ID 并返回给客户端 // 适用于返回用户信息的部分 func getUserId(c *gin.Context) {data : ExtractClaims(c) // 从上下文中提取 claimsif data nil {fmt.Println(fmt.Sprintf(%s [WARNING] %s %s GetUserId 缺少 identity, time.Now().Format(time.RFC3339), c.Request.Method, c.Request.URL.Path))c.JSON(http.StatusUnauthorized, gin.H{error: 无法获取用户ID}) // 如果没有提取到 claims返回 401 错误return}identity : data.Identity // 获取用户 IDc.JSON(http.StatusOK, gin.H{userId: identity}) // 返回用户 ID 给客户端 }// ExtractClaims 从上下文中提取 JWT claims // 适用于返回用户信息的部分 func ExtractClaims(c *gin.Context) *Claims {claims, exists : c.Get(claims) // 从上下文中获取 claimsif !exists {return nil // 如果 claims 不存在返回 nil}return claims.(*Claims) // 返回 claims } 3.测试 获取token: 使用生成的 JWT token 测试 在 Postman 中按照以下步骤 创建一个新的 GET 请求。设置 URL 为 http://localhost:8080/user。在请求头中添加一个新的头字段 Authorization值为你在上面生成的 JWT token。点击 Send 按钮。 你将会收到包含用户 ID 的 JSON 响应。
http://www.hkea.cn/news/14279555/

相关文章:

  • 建网站的系统网站上的支付接口怎么做
  • 做网站使用明星照片可以吗网站建设第三方平台
  • 星座 网站 建设一千块钱能注册公司吗
  • wordpress信息发布系统沧州seo公司
  • 安徽智能网站建设推荐但未能选择wordpress数据库
  • 网站开发需要哪些东西微网站建设及开发
  • 店面设计要素山东网站营销优化开发
  • 软件公司网站模板下载怎么做无货源网店
  • 做电影采集网站需要多大vps商业网站的后缀
  • 傻瓜做网站河北工程信息网
  • 专业建设验收网站大连工业大学研究生院官网
  • 网站备案需要具备什么条件免费做自我介绍网站
  • 用花瓣网站上的图片做游戏行吗网站后台更新缓存失败
  • 如何查看网站做没做百度推广企业网站建设和网络营销的关系
  • 网站汉英结合的怎么做参与做网站的收获
  • 网站 模板asp网站怎么做301
  • 做一个网站成本是多少湘潭做网站价格品牌磐石网络
  • 深圳网站优化费用wordpress小工具制作
  • 做网站 如何 挣钱怎么找到装修公司电话
  • 做环评需要关注哪些网站个人网页制作软件
  • 社区信息建设网站wordpress xrea
  • 手机版网站模板升级wordpress需要ftp
  • 网站禁止右键徐州网站运营
  • 南宁网络公司网站建设wordpress配置资源
  • 做外贸必须有公司网站么wordpress 流量统计插件
  • 织梦 企业网站耳机商城网站开发
  • 建设信用卡分期购物网站新版wordpress如何添加标签
  • 网站下雪特效计算机网站建设考试试卷
  • 深圳网站建设.-方维网络齐齐哈尔做网站公司
  • 百度信息流广告推广关键词优化策略