susomena / token-auth
Laravel 5 的令牌认证包
Requires
- php: >=5.4.0
- illuminate/database: 5.0.*
- illuminate/support: 5.0.*
This package is not auto-updated.
Last update: 2024-10-02 08:05:15 UTC
README
Laravel 5 的令牌认证包。
安装
首先使用 composer 安装包
composer require susomena/token-auth
然后,将服务提供者添加到你的 config/app.php 文件中的 providers 数组
'Susomena\TokenAuth\TokenAuthServiceProvider',
现在,你需要使用以下 artisan 命令将包中的配置文件和迁移文件导入到你的项目中
artisan vendor:publish
然后迁移数据库,添加凭证表
artisan migrate
注意,迁移是按照字母顺序进行的。如果你已经创建了自己的用户表并有自己的迁移,Laravel 将尝试在用户表之前创建凭证表,因为用户表不存在,所以外键不会指向任何用户字段。在这种情况下,你必须将凭证迁移文件的名称更改,以便它出现在你的迁移之后。例如,凭证迁移文件的名称是
2015_02_27_100000_create_credentials_table.php
如果你的用户表迁移文件名为
2015_03_02_100000_create_users_table.php
那么你可以将凭证表迁移重命名为
2015_03_02_200000_create_credentials_table.php
此外,你也可以使用迁移来更改原始的 Laravel 用户表,使其符合你的需求。
如果你遇到以下错误
PHP Fatal error: Class 'Susomena\TokenAuth\TokenAuthServiceProvider' not found in /ProjectPath/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 150
在 composer 或 artisan 命令之后,只需在 config/app.php 的 providers 数组中注释掉 TokenAuthServiceProvider,再次运行命令,然后取消注释该行。这只是一个临时的解决方案,在我尝试解决这个问题的时候。
使用 TokenAuth
此包包含所有用于使用令牌认证用户所需的内容。该包定义了一个在 /credentials/login
的路由,该路由通过 HTTP POST 期望两个参数,用户名(默认为数据库中的电子邮件字段,这可以在 config/credentials.php 文件中更改)和密码。如果这对参数属于现有用户,则该路由返回一个包含凭证对象(包含24小时有效期的令牌,此值可以在 config/credentials.php 文件中更改)和拥有令牌的用户的对象的 JSON 对象。以下是一个示例 JSON
{ "id": 27, "token": "54fd719a611105.13505663", "expires": 1425982234, "user_id": 1, "created_at": "2015-03-09 10:10:34", "updated_at": "2015-03-09 10:10:34", "user": { "id": 1, "name": "Name", "email": "email@email.com", "created_at": "2015-03-06 12:22:01", "updated_at": "2015-03-06 12:22:01" } }
删除 CSRF 中间件非常重要,以便使此路由正常工作。如果你想在路由中使用 CSRF 保护,请将 CSRF 中间件放在 routeMiddleware 数组中而不是 middleware 数组中。
此包还包括一个 TokenMiddleware,你可以将其用于你的路由。要做到这一点,请将此中间件添加到 app/Http/Kernel.php 中的 routeMiddleware 数组
'token' => 'Susomena\TokenAuth\Middleware\TokenMiddleware'
然后,在你想使用的任何路由中使用此中间件
Route::get('path/of/the/route', ['middleware' => 'token', function(){ // Closure logic }]);
现在,如果你想使用令牌来认证你的用户,你必须使用 /credentials/login
路由来认证用户的用户名和密码,并为该用户获取一个有效的令牌,然后你必须将此令牌放在名为 X-Credentials-Token
的 HTTP 头部中,并将其发送到每个 HTTP 请求。