Vij*_*dey 5 php authentication laravel laravel-5 laravel-5.2
我正在使用Laravel 5.2开发RESTful API.在位于\Illuminate\Auth\TokenGuard\TokenGuard.php第46行的令牌防护中,令牌的列名定义为api_token:
$this->storageKey = 'api_token';
Run Code Online (Sandbox Code Playgroud)
我想将此列名更改为其他名称,例如api_key.
我怎样才能做到这一点?我不想修改核心TokenGuard.php文件.
pat*_*cus 16
内置TokenGuard没有办法修改storageKey字段.因此,您需要创建自己的Guard类来设置字段,并告诉Auth您使用您的Guard类.
首先,首先创建一个Guard扩展基TokenGuard类的新类.在此示例中,它是在app/Services/Auth/MyTokenGuard.php以下位置创建的:
namespace App\Services\Auth;
use Illuminate\Http\Request;
use Illuminate\Auth\TokenGuard;
use Illuminate\Contracts\Auth\UserProvider;
class MyTokenGuard extends TokenGuard
{
public function __construct(UserProvider $provider, Request $request)
{
parent::__construct($provider, $request);
$this->inputKey = 'api_key'; // if you want to rename this, as well
$this->storageKey = 'api_key';
}
}
Run Code Online (Sandbox Code Playgroud)
一旦你创建了你的课程,你需要Auth了解它.您可以在服务提供商的boot()方法中执行此操作AuthServiceProvider:
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
Auth::extend('mytoken', function($app, $name, array $config) {
return new \App\Services\Auth\MyTokenGuard(Auth::createUserProvider($config['provider']), $app['request']);
});
}
Run Code Online (Sandbox Code Playgroud)
最后,你需要告诉你Auth使用你的新mytoken卫士.这是在config/auth.php配置文件中完成的.
'guards' => [
'api' => [
'driver' => 'mytoken',
'provider' => 'users',
],
],
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3239 次 |
| 最近记录: |