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

国内优秀网页网站设计推广普通话宣传内容

国内优秀网页网站设计,推广普通话宣传内容,wordpress修改域名后无法登陆,wordpress页面分类插件文章目录 背景基于Token认证机制简介常见的Token类型Token的生成和验证在项目工程里创建jwt.go文件根目录新建.env文件 创建登录接口 /loginToken认证机制的优点 背景 登录流程,相信大家都很熟悉的。传统网站采用session后端验证登录状态,大致流程如下&…

文章目录

    • 背景
    • 基于Token认证机制简介
    • 常见的Token类型
    • Token的生成和验证
      • 在项目工程里创建jwt.go文件
      • 根目录新建.env文件
    • 创建登录接口 /login
    • Token认证机制的优点

背景

登录流程,相信大家都很熟悉的。传统网站采用session后端验证登录状态,大致流程如下:

  • 用户输入用户名和密码 / 手机号和验证码点击登录按钮提交表单。
  • 后端校验前端传递过来的信息,验证通过在缓存中存储用户信息。
  • 后续每次请求时,携带session_id发送给服务端验证登录状态。

综上所述,一个简单的登录流程就完成了,但是你会发现在现如今session机制已无法满足一些服务架构,特别是在分布式服务和单点登录等功能使用session机制完成登录认证过程就需要解决共享session的问题,再者如果用户量很多,服务器内存压力会很大等等。

基于Token认证机制简介

Token 认证机制 是一种常用的身份验证方法,特别适用于现代化的 前后端分离 和 微服务架构 的应用。相比传统的 Session 认证机制,Token 认证具有一些明显的优势,特别是在 扩展性 和 跨平台 支持上,大致流程如下:
4. 客户端通过用户名和密码请求登录,后端对接收到的账号和密码进行验证
5. 如验证通过,则会签发一个Token返回给客户端进行存储
6. 后续客户端通过Authorization头部携带Token向服务器请求资源。

常见的Token类型

最常用的Token类型是JWT(JSON Web Token),它是一种自包含的、基于JSON格式的Token
JWT分为三个部分:

  1. Header(头部):
    • 通常包含Token类型(例如JWT)和所使用的签名算法(例如HS256)。
  2. Payload(负载):
    • 包含用户的相关信息(如用户ID、权限等)。这是Token的主体部分,不加密,因此可以被客户端解码,但签名确保其不被篡改。
  3. Signature(签名):
    • 由服务器端的密钥生成,用来验证Token的合法性和完整性。签名部分用于防止Token在传输过程中被篡改。

Token的生成和验证

在项目工程里创建jwt.go文件

参考路径:BackEnd/pkg/auth/jwt.go

package authimport ("errors""os""time""github.com/golang-jwt/jwt/v5""github.com/joho/godotenv"
)// Secret 从环境变量中加载 JWT 密钥
var jwtSecret = []byte(getJWTSecret())// getJWTSecret 从环境变量中获取 JWT 密钥
func getJWTSecret() string {// 加载.env文件if err := godotenv.Load(); err != nil {panic("无法加载 .env 文件,请确保文件存在并正确配置")}secret := os.Getenv("JWT_SECRET")if secret == "" {panic("环境变量 JWT_SECRET 未设置,请配置后再运行程序")}return secret
}// GenerateToken 生成 JWT Token
func GenerateToken(username string) (string, error) {claims := jwt.MapClaims{"username": username,"exp":      time.Now().Add(time.Hour).Unix(), // 一小时后过期"iat":      time.Now().Unix(),                // 签发时间}token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)return token.SignedString(jwtSecret)
}
// 验证签名时,通过解析 token ,验证 token 是否有效,再验证是否过期。验证Token 是用在用户登录后所有请求都需要携带 token ,然后服务端获取到 token 再进行验证过。
func ValidateToken(tokenString string) (jwt.MapClaims, error) {token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {return nil, errors.New("签名方法无效,请检查 Token 的生成方式")}return jwtSecret, nil})if err != nil {return nil, err}if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {return claims, nil}return nil, errors.New("无效的 Token,请重新登录获取有效的 Token")
}

根目录新建.env文件

该文件用于区分不同环境的参数和记录密钥等信息

JWT_SECRET=kklive

创建登录接口 /login

参考路径:BackEnd/internal/user/handle.go

package userimport ("database/sql""my-ecommerce-app/pkg/auth""net/http""github.com/gin-gonic/gin""golang.org/x/crypto/bcrypt"
)// Response 定义统一的响应结构
type Response struct {Code    int    `json:"code"`Message string `json:"message"`
}// UserLoginRequest 定义登录请求结构
type UserLoginRequest struct {Username string `json:"username" binding:"required"`Password string `json:"password" binding:"required"`
}// UserQueryRequest 查询用户请求结构
type UserQueryRequest struct {Username string `json:"username" binding:"required"`
}// UserQueryResponse 查询用户响应结构
type UserQueryResponse struct {ID         int    `json:"id"`Username   string `json:"username"`Nickname   string `json:"nickname"`Face       string `json:"face"`Email      string `json:"email"`Created_at string `json:"created_at"`
}// UserLoginResponse 定义登录成功的响应
type UserLoginResponse struct {Message string `json:"message"`Token   string `json:"token,omitempty"`Code    int    `json:"code"`
}// LoginHandler 用户登录接口
// @Summary 用户登录
// @Description 用户通过用户名和密码登录
// @Tags 用户模块
// @Accept json
// @Produce json
// @Param user body UserLoginRequest true "登录请求参数"
// @Success 200 {object} UserLoginResponse
// @Failure 400 {object} Response
// @Failure 401 {object} Response
// @Router /api/login [post]
func LoginHandler(db *sql.DB) gin.HandlerFunc {return func(ctx *gin.Context) {var req UserLoginRequestif err := ctx.ShouldBindJSON(&req); err != nil {ctx.JSON(http.StatusBadRequest, gin.H{"code":    401,"message": "参数错误",})return}var passwordHash stringerr := db.QueryRow("SELECT password FROM li_admin_user WHERE username = ?", req.Username).Scan(&passwordHash)if err != nil {if err == sql.ErrNoRows {ctx.JSON(http.StatusUnauthorized, gin.H{"code":    405,"message": "用户名或密码错误",})} else {ctx.JSON(http.StatusInternalServerError, gin.H{"code":    500,"message": "服务器错误",})}return}if err := bcrypt.CompareHashAndPassword([]byte(passwordHash), []byte(req.Password)); err != nil {ctx.JSON(http.StatusUnauthorized, gin.H{"code":    405,"message": "用户名或密码错误",})return}token, err := auth.GenerateToken(req.Username)if err != nil {ctx.JSON(http.StatusInternalServerError, gin.H{"code":    500, // Token生成错误"message": "请重新登录",})return}ctx.JSON(http.StatusOK, UserLoginResponse{Code:    200,Message: "登录成功!",Token:   token,})}
}

Token认证机制的优点

使用Token进行无状态登录认证后,就可以轻松的实现多端登录和单点登录SSO,在签名算法中加入Token机器信息,就可以有效的控制账号的多端登录登出场景。

  • 支持多端同时登录,任意端退出登录时,其他端保持不变,每个端会生成自己的Token,并且相互独立
  • 支持多端同时登录,一端退出所有端退出登录,增加用户登录设备表,记录账号登录的设备和对应的Token信息,当一端点击退出时,在服务端删除缓存中的Token信息即可
  • 多端选择性退出部分端:退出登录时增加一个需要退出端的对应设备类型或者设备ID,然后对应设备下的token 进行失效处理。

当然,除了以上使用场景,还有其他的优点,欢迎在评论区一起交流~


文章转载自:
http://electropolar.c7629.cn
http://behold.c7629.cn
http://huckleberry.c7629.cn
http://surefooted.c7629.cn
http://vigorousness.c7629.cn
http://hydro.c7629.cn
http://yacht.c7629.cn
http://concertante.c7629.cn
http://sukie.c7629.cn
http://probably.c7629.cn
http://bloodworm.c7629.cn
http://imho.c7629.cn
http://brachiopoda.c7629.cn
http://gerundival.c7629.cn
http://capercaillie.c7629.cn
http://insensate.c7629.cn
http://necromancy.c7629.cn
http://revises.c7629.cn
http://aloeswood.c7629.cn
http://wang.c7629.cn
http://keratoconjunctivitis.c7629.cn
http://recessive.c7629.cn
http://exciseman.c7629.cn
http://crusian.c7629.cn
http://remigrate.c7629.cn
http://nonsoap.c7629.cn
http://cher.c7629.cn
http://toccata.c7629.cn
http://journeyman.c7629.cn
http://kitchen.c7629.cn
http://floor.c7629.cn
http://plotty.c7629.cn
http://largely.c7629.cn
http://dobsonfly.c7629.cn
http://workload.c7629.cn
http://indie.c7629.cn
http://acoasm.c7629.cn
http://chalcogenide.c7629.cn
http://hepatosis.c7629.cn
http://gourmet.c7629.cn
http://revise.c7629.cn
http://mesothorax.c7629.cn
http://adoptionism.c7629.cn
http://bleach.c7629.cn
http://hilum.c7629.cn
http://galvanometer.c7629.cn
http://bushbuck.c7629.cn
http://ganosis.c7629.cn
http://sideman.c7629.cn
http://nonfulfilment.c7629.cn
http://alloy.c7629.cn
http://replaceable.c7629.cn
http://domo.c7629.cn
http://immiserize.c7629.cn
http://witted.c7629.cn
http://reputable.c7629.cn
http://ametoecious.c7629.cn
http://pulpy.c7629.cn
http://agromania.c7629.cn
http://flinders.c7629.cn
http://awheel.c7629.cn
http://elder.c7629.cn
http://ytterbia.c7629.cn
http://cancerology.c7629.cn
http://peg.c7629.cn
http://sipunculan.c7629.cn
http://recoilless.c7629.cn
http://sexagenary.c7629.cn
http://thorntree.c7629.cn
http://closely.c7629.cn
http://mpm.c7629.cn
http://jitney.c7629.cn
http://supergravity.c7629.cn
http://neodoxy.c7629.cn
http://shenyang.c7629.cn
http://thorntree.c7629.cn
http://appulsively.c7629.cn
http://audiotyping.c7629.cn
http://diluvium.c7629.cn
http://heartland.c7629.cn
http://deflexed.c7629.cn
http://lactoprotein.c7629.cn
http://ixtle.c7629.cn
http://holosericeous.c7629.cn
http://swarthy.c7629.cn
http://silex.c7629.cn
http://bazzoka.c7629.cn
http://triploblastic.c7629.cn
http://feudality.c7629.cn
http://louise.c7629.cn
http://denudation.c7629.cn
http://presently.c7629.cn
http://fornicate.c7629.cn
http://voodoo.c7629.cn
http://colligable.c7629.cn
http://wogland.c7629.cn
http://router.c7629.cn
http://ignoramus.c7629.cn
http://intraperitoneal.c7629.cn
http://pettifogger.c7629.cn
http://www.zhongyajixie.com/news/88883.html

相关文章:

  • 如何做网站链接分享朋友圈新媒体seo指的是什么
  • 二手域名交易平台抖音seo源码搭建
  • 简单炫酷的网站网站建设方案设计书
  • 临沂网站建设哪家好怎么做网页宣传
  • 网站开发界面设计企业营销策划书如何编写
  • dw如何在网站做弹窗快手刷评论推广网站
  • 谷歌网络营销的概念可靠的网站优化
  • 网站代码怎么放知名网络软文推广平台
  • 网站建设学什么今天
  • 武汉网站设计南宁公司厦门关键词优化网站
  • 武义做网站东莞谷歌推广公司
  • 做性的网站百度百度一下官网
  • 网站用什么服务器有创意的营销策划案例
  • 网站备案费用沈阳网站优化
  • 企业的网站建设与设计论文电商如何推广自己的产品
  • 品牌网站建设收费标准一般的电脑培训班要多少钱
  • 国内管理咨询公司排行seo接单一个月能赚多少钱
  • 同学录网站建设网络营销顾问
  • 天河网站建设设计指数是什么
  • 关于建设校园网站的毕业论文有哪些可以推广的平台
  • 美工做任务网站营销方法
  • 2017三五互联做网站怎么样网络营销服务
  • 网站响应式首页模板下载外贸独立站推广
  • 一家专做二手手机的网站叫什么手机电脑全自动挂机赚钱
  • 响应式mvc企业网站源码关键词点击优化工具
  • 南县人民政府门户网站网络营销10大平台
  • 本地搭建网站新品怎么推广效果最好
  • 网站着陆页百度2023免费
  • ui设计是什么专业的网站seo外包
  • 找代理做网站推广靠谱吗百度网站首页