网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言、公共网关接口、组件等),可以创造出功能强大的网页。因而,超级文本标记语言是万维网(Web)编程的基础,也就是说万维网是建立在超文本基础之上的。超级文本标记语言之所以称为超文本标记语言,是因为文本中包含了所谓“超级链接”点。
本篇文章给大家带来的内容是关于php自定义token类并将生成的token放在http请求头的Authorization中的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
今天在使用laravel写东西的时候,需要与前端交互,看了jwt(json web token),于是自己想试着写一个简单的token类,token中存储了成员id和成员的权限,与前端交互时,将生成的token放在http请求头的Authorization中,整理如下:
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class TokenController extends Controller{
/**
* header
* @var array
*/
private static $header = [
"type" => "token",
"alg" => "HS256"
]; /**
* create payload
* @param $memberId
* @param $permission
* @return array
*/
private static function payload($memberId, $permission)
{
return [
"iss" => "http://api.creatshare.com",
"iat" => $_SERVER['REQUEST_TIME'],
"exp" => $_SERVER['REQUEST_TIME'] + 7200,
"GivenName" => "CreatShare",
"memberId" => $memberId,
"permission"=> $permission
];
} /**
* encode data
* @param $data
* @return string
*/
private static function encode($data)
{
return base64_encode(json_encode($data));
} /**
* generate a signature
* @param $header
* @param $payload
* @param string $secret
* @return string
*/
private static function signature($header, $payload, $secret = 'secret')
{
return hash_hmac('sha256', $header.$payload, $secret);
} /**
* generate a token
* @param $memberId
* @param $permission
* @return string
*/
public static function createToken($memberId, $permission)
{
$header = self::encode(self::$header);
$payload = self::encode(self::payload($memberId, $permission));
$signature = self::signature($header, $payload);
return $header . '.' .$payload . '.' . $signature;
} /**
* check a token
* @param $jwt
* @param string $key
* @return array 关键词:php自定义token类并将生成的token放在http请求头的Authorization中的代码