每日笔记

记录击毙


使用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>&lt;?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())-&gt;setIssuer('https://www.baidu.com') -&gt;setAudience('httpsp://www.baidu.com') -&gt;setId('sxs-4f1g23a12aa', true) //自定义标识 -&gt;setIssuedAt(time()) //当前时间 -&gt;setExpiration(time() + (86400 * 30)) //token有效期时长 -&gt;set('uid', $uid) -&gt;sign($signer, '你的加盐字符串') -&gt;getToken(); //这里可以做一些其它的操作,例如把Token放入到Redis内存里面缓存起来。 /** * ...... * ...... **/ return (String) $token; } /** * 检测Token是否过期与篡改 * @param token * @return boolean **/ public static function validateToken($tokan = null) { $token = (new Parser())-&gt;parse((String) $token); $signer = Sha256(); if (!$token-&gt;verify($signer, '创建时候的加盐字符串')) { return false; //签名不正确 } $validationData = new ValidationData(); $validationData-&gt;setIssuer('https://www.baidu.com'); $validationData-&gt;setAudience('https://www.baidu.com'); $validatationData-&gt;setId('sxs-4f1g23a12aa');//自字义标识 return $token-&gt;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>

页面列表

ITEM_HTML