hxhzyh/gp-jwt

access-statistics

1.0.0 2021-08-17 06:41 UTC

This package is not auto-updated.

Last update: 2025-04-10 20:19:30 UTC


README

安装

composer require hxhzyh/gp-jwt

介绍

jwt 通用于PHP语言和go语言的封装 go: go get github.com/dgrijalva/jwt-go 实例代码: 生成:

type Claims struct {
	UserId uint
	jwt.StandardClaims
}

claims := &Claims{
	UserId: 1,
	StandardClaims:jwt.StandardClaims{
		//ExpiresAt: 1629167344,
		Issuer: "hello",
		//IssuedAt: 1629167344,
		Subject: "user_token",
		Id: "hdfsafdsag",
	},
}

tokenObj := jwt.NewWithClaims(jwt.SigningMethodHS256,claims)
tokenString,_ := tokenObj.SignedString(secretKey)

解析:

	//封装方法
	func ParseToken(tokenString string) (*jwt.Token, *Claims, error)  {
		claims := &Claims{}
		token,err := jwt.ParseWithClaims(tokenString,claims, func(token *jwt.Token) (interface{}, error) {
			return jwtKey, nil
		})

		return token,claims,err
	}
	
	//调用
	token, claims, err := common.ParseToken(tokenString)
	if err != nil || !token.Valid {
		common.Response(c,401,"登录已过期2", nil)
		c.Abort() //抛弃这次请求
		return
	}

	userId := claims.UserId

	

PHP:

composer require hxhzyh/gp-jwt	

生成:

	$jwtObj = Jwt::getInstance()->setSecretKey($secretkey)->publish();
    $jwtObj->setUserId(1)->setIss('hello')->setSub('user_token')->setJti('suiji-jti');
    $token = $jwtObj->getToken();

解析:

	$jwtObj = Jwt::getInstance()->setSecretKey($secretkey)->decode($jwtToken);
    dd($jwtObj, $jwtObj->getStatus(), $jwtObj->getUserId());

注:生成时,时间可自定义是否使用,传值则验证token是否过期,不传值,不认证,需自定义验证,例单点登录限制,需redis介入

依赖