laravel 使用JWT实现用户认证
来源:互联网 发布:室内效果图制作软件 编辑:程序博客网 时间:2024/06/06 01:53
在laravel使用Token进行用户认证
首先先安装拓展包
composer require tymon/jwt-auth 0.5.*
然后在配置中注册
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class.....'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
发布配置文件生成密钥
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"php artisan jwt:generate
然后创建注册和登录路由
/routes/web.phpRoute::post('/register', 'Auth\RegisterController@register');Route::post('/login','Auth\LoginController@email');
去控制器创建注册用户方法
app/Http/Controllers/Auth/RegisterController.phpprotected function create(array $data){}public function register(Request $request) { $this->validator($request->all())->validate(); //验证的规则 $user = $this->create($request->all());//存数据到数据库 $token = JWTAuth::fromUser($user); //通过用户对象实例创建token return ["token" => $token]; }
接下来创建登录的方法,这里我是用邮箱登录
app/Http/Controllers/Auth/LoginController.phppublic function email(Request $request) { // grab credentials from the request $credentials = $request->only('email', 'password'); try { // attempt to verify the credentials and create a token for the user if (! $token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'invalid_credentials'], 401); } } catch (JWTException $e) { // something went wrong whilst attempting to encode the token return response()->json(['error' => 'could_not_create_token'], 500); } // all good so return the token return response()->json(compact('token')); }
之后就会得到
{
“token”:”eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIiwiaXNzIjoiaHR0cDpcL1wvbG9jYWx
ob3N0OjgwMDFcL2F1dGhcL2xvZ2luIiwiaWF0IjoxNDUxODg4MTE5LCJleHAiOjE0NTQ1MTYxMTksIm5iZiI6MTQ1MTg4OD
}
token可以设置Authorization头来使用:
Authorization: Bearer {yourtokenhere}
也可以放进URL中使用
http://localhost:8001?token={yourtokenhere}
用户完成登录注册之后就可以设置需要登录后才能访问的路由,首先到
app/Http/Kernel.phpprotected $routeMiddleware = [ ... 'jwt.auth' => 'Tymon\JWTAuth\Middleware\GetUserFromToken', 'jwt.refresh' => 'Tymon\JWTAuth\Middleware\RefreshToken',];
然后就是设置路由
routes/web.phpRoute::group(['middleware' => 'jwt.auth', 'providers' => 'jwt'], function () { Route::post('/test', 'TestController@test'); });
这样就代表在访问/test路由的时候需要带有token,登录才能访问
而获取用户信息则可以在TestController中的test方法中采用
$user = JWTAuth::parseToken()->authenticate();//获取用户信息
阅读全文
0 0
- laravel 使用JWT实现用户认证
- Laravel 5 中使用 JWT(Json Web Token) 实现基于API的用户认证
- Laravel 5.2 使用 JWT 完成多用户认证
- Laravel 5.2 使用 JWT 完成多用户认证
- koa 实现 jwt 认证
- Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(json web token) 用户发送按照约定,向服务端发送 Header、Payload 和 Signature,
- Laravel中用户认证功能的实现
- API接口JWT方式的Token认证(上),服务器(Laravel)的实现
- Laravel 用户认证
- 基于JWT的Socket.io用户认证
- 前后端分离之JWT用户认证
- Laravel-使用中间件做用户认证和权限管理
- Laravel的用户认证模块
- Laravel 用户认证体系详解
- Lumen上使用Dingo/Api做API开发时用JWT-Auth做认证的实现
- Spring Boot实战之Filter实现使用JWT进行接口认证
- Lumen上使用Dingo/Api做API开发时用JWT-Auth做认证的实现
- Spring Boot实战之Filter实现使用JWT进行接口认证
- 迅雷下载边下边播设置为本地安装的浏览器
- python定义类(class)的语法,
- 专为测试人员打造的 json 解析 jar 包--zson
- 树莓派最新raspbian系统换国内源
- 数据结构循环队列的基本操作(C语言)
- laravel 使用JWT实现用户认证
- Java作业所有(二)
- 比较总结线性表的几种主要存储结果
- github:提交本地html到github
- 第四章语句十个问题及解答
- 统计学习方法——第一章学习笔记
- eclipse安装MAT出现An internal error occurred during: "Parsing heap dump from‘**\java_pid6564.hprof '
- Java提高篇(51)--正则表达式
- leetcode#9. Palindrome Number