# Token介绍 * * * * * ### access_token(访问令牌)介绍 之前在后台介绍的地方已经提过token了,此处来详细讲解一下。 访问令牌的作用是让咱们所有的系统接口不是别人想用就可以使用的,哪怕文章查询接口 也不希望不法分子可以直接调用,下面咱们看下 访问令牌如何生成的。 ~~~ // 获取访问token function get_access_token() { return md5('OneBase' . date("Ymd") . API_KEY); } ~~~ 就这么一个小函数丫,access_token 每天都会产生变化,并且依赖 API_KEY。 ![](https://box.kancloud.cn/94f558d555b29ef27eafe2a1f78b19c7_1913x576.png) API_KEY, 可在后台自己设置,比如 咱们场景如下:接口需要被 wap端和app端使用。 那么咱们只需要将这个算法告知wap研发人员和app端工程师就好啦,然后将API_KEY告诉他,他就可以自己生成access_token咯,这样就可以确保访问咱们接口滴 都是自己人,当然再加上个IP限制就更安全啦。 * * * * * ### user_token(用户令牌)介绍 上面咱们知道了如何生成访问令牌,这样咱们就可以操作不需要用户登录的所有接口咯,如果想操作 修改密码接口咋办? 不好意思,需要从登录接口拿user_token,然后传递给修改密码接口才行. user_token 怎么生成的? ~~~ public static function tokenSign($member) { $key = API_KEY . JWT_KEY; $jwt_data = ['member_id' => $member['id'], 'nickname' => $member['nickname'], 'username' => $member['username'], 'create_time' => $member['create_time']]; $token = [ "iss" => "OneBase JWT", // 签发者 "iat" => TIME_NOW, // 签发时间 "exp" => TIME_NOW + TIME_NOW, // 过期时间 "aud" => 'OneBase', // 接收方 "sub" => 'OneBase', // 面向的用户 "data" => $jwt_data ]; $jwt = JWT::encode($token, $key); $jwt_data['user_token'] = $jwt; return $jwt_data; } ~~~ 看到了吧, 是通过 API_KEY 与 JWT_KEY 进行 JWT签发的,JWT相关知识此处不再讲解,有兴趣的童鞋可以搜索一下喔。 那么 JWT_KEY 在哪? 往上看,那个系统设置那个图,都是后台设置的。 为了安全起见,建议系统运营之前修改下这两个KEY。