使用JWT生成Token实例
<p>参考链接:<a href="https://blog.csdn.net/zy994914376/article/details/79579101">https://blog.csdn.net/zy994914376/article/details/79579101</a></p>
<p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/be9c0584453ad1f05978900e60480014?showdoc=.jpg" alt="" />
<img src="https://www.showdoc.cc/server/api/common/visitfile/sign/7e10d77f6ba78e5351378d2c17a1c29a?showdoc=.jpg" alt="" /></p>
<h4>6、下面使用PHP来创建Token</h4>
<pre><code><?php
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\ValidationData;
use \Exception;
class Token
{
/**
* 创建Token
* @param $uid 需要保存的用户身份标识
* @return String
**/
public static function createToken($uid = null)
{
$signer = new Sha256();
$token = (new Builder())->setIssuer('https://www.baidu.com')
->setAudience('httpsp://www.baidu.com')
->setId('sxs-4f1g23a12aa', true) //自定义标识
->setIssuedAt(time()) //当前时间
->setExpiration(time() + (86400 * 30)) //token有效期时长
->set('uid', $uid)
->sign($signer, '你的加盐字符串')
->getToken();
//这里可以做一些其它的操作,例如把Token放入到Redis内存里面缓存起来。
/**
* ......
* ......
**/
return (String) $token;
}
/**
* 检测Token是否过期与篡改
* @param token
* @return boolean
**/
public static function validateToken($tokan = null)
{
$token = (new Parser())->parse((String) $token);
$signer = Sha256();
if (!$token->verify($signer, '创建时候的加盐字符串')) {
return false; //签名不正确
}
$validationData = new ValidationData();
$validationData->setIssuer('https://www.baidu.com');
$validationData->setAudience('https://www.baidu.com');
$validatationData->setId('sxs-4f1g23a12aa');//自字义标识
return $token->validate($validationData);
}
}</code></pre>
<h3>TokenController调用实现</h3>
<pre><code>Class TokenController
{
public function create()
{
$token = Token::createToken(1);
var_dump($token);
}
public function validate($token)
{
$bool = Token::validateToken($token);
var_dump($bool);
}
}</code></pre>