由于自己开发的项目中用到了 JWT 技术,前端采用了 Vue.js
框架,后端采用了 CodeIgniter
框架,故作此文帮助使用相同技术栈的朋友们。
具体思路如下:
把后端生成的 JWT token 存入 localStorage,然后前端切换路由(刷新页面)的时候,通过 Ajax 请求的时候带上这个 token,提交给后端判断当前的 token 是否有效,后端返回结果。
JWT 用处很多,可以用于后台权限的限制、接口安全性校验。
https://segmentfault.com/a/1190000010444825
https://blog.sakuradon.com/index.php/archives/349/
https://jwt-auth.readthedocs.io/en/develop/quick-start/
https://medium.com/employbl/build-authentication-into-your-laravel-api-with-json-web-tokens-jwt-cd223ace8d1a
https://jwt.io/introduction/
http://www.luohun.org/index.php/archives/27//www/wn-kiki-admin-server/app/User.php
/**
* 关闭 递增
*/
public $incrementing = false;
/**
* 关闭 创建时间 与 更新时间的自动维护
*/
public $timestamps = false;
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
路由:
Route::group(['namespace' => 'Home','middleware' => ['api','response']],function (){
//商品列表+详情
Route::resource('/goodslist','GoodsController');
//商品分类
Route::resource('/class','ClassController');
//需要登陆才能查看的接口
Route::group(['middleware' => ['jwt.auth']],function (){
//购物车
Route::resource('/cart','CartController');
});
});
0x03 创建token
需要引入的:
use Appuser;
use JWTAuth;
//查询一条数据,并输出token
$user = User::first();
$token = JWTAuth::fromUser($user);
0x04 获取token
public function index(Response $response)
{
//获取用户信息
$user = JWTAuth::toUser(Input::get('token'));
//获取购物车信息
$cart = self::$cartService->getCart($user->id);
//判断是否有值
if (empty($cart) || ($cart->count() <= 0)){
return $response->setStatusCode(404);
}
return $cart;
}
http://www.sunfengxiang.com/1097.html
Json Web Token(JWT)简介
https://learnku.com/articles/10885/full-use-of-jwt