Laravel 5 具有多个表的Laravel 5 JWT令牌
我有一个Laravel5后端,它将jwt令牌作为json响应发送(使用)。用户身份验证工作正常 我需要做的是使用jwt令牌进行管理员身份验证。管理员位于名为admin的不同表上Laravel 5 具有多个表的Laravel 5 JWT令牌,laravel-5,jwt,Laravel 5,Jwt,我有一个Laravel5后端,它将jwt令牌作为json响应发送(使用)。用户身份验证工作正常 我需要做的是使用jwt令牌进行管理员身份验证。管理员位于名为admin的不同表上 如何为不同的表使用jwt令牌?目前,该软件包不支持对应用程序用户进行多表身份验证 例如,您可以做的是: 为需要admin table与jwt auth协同工作的路由创建中间件 在这种情况下,中间件将配置更改应用于jwt,并在身份验证或使用jwt令牌之前更改模型 首选解决方案: 您可以在这里看到,对于这个没有连接到任何配置
如何为不同的表使用jwt令牌?目前,该软件包不支持对应用程序用户进行多表身份验证 例如,您可以做的是:
干杯。我遇到了类似的问题,对我来说,创建路由中间件并更新auth.model就足够了(只需将\App\User更改为\App\Customer):
表和其他应该在模型中定义的db内容,所以上面的条目应该有用。它对我有用,我有两个用户客户和沙龙所有者。要更改,我更新了auth.model和jwt.user两件事:
Config::set('jwt.user', 'App\Salon_owner');
Config::set('auth.providers.users.model', \App\SalonOwner::class);
这对我有用。你可以使用它们
public function userLogin(Request $request){
Config::set('jwt.user', 'App\User');
Config::set('auth.providers.users.model', \App\User::class);
$credentials = $request->only('email', 'password');
$token = null;
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json([
'response' => 'error',
'message' => 'invalid_email_or_password',
]);
}
} catch (JWTAuthException $e) {
return response()->json([
'response' => 'error',
'message' => 'failed_to_create_token',
]);
}
return response()->json([
'response' => 'success',
'result' => [
'token' => $token,
'message' => 'I am front user',
],
]);
}
public function adminLogin(Request $request){
Config::set('jwt.user', 'App\Admin');
Config::set('auth.providers.users.model', \App\Admin::class);
$credentials = $request->only('email', 'password');
$token = null;
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json([
'response' => 'error',
'message' => 'invalid_email_or_password',
]);
}
} catch (JWTAuthException $e) {
return response()->json([
'response' => 'error',
'message' => 'failed_to_create_token',
]);
}
return response()->json([
'response' => 'success',
'result' => [
'token' => $token,
'message' => 'I am Admin user',
],
]);
}
无需更改
config/auth.php
中的提供程序
您可以按如下方式更改每个控制器中的\u构造
函数。以便jwt知道要验证哪个模型
AdminController
function __construct()
{
Config::set('jwt.user', Admin::class);
Config::set('auth.providers', ['users' => [
'driver' => 'eloquent',
'model' => Admin::class,
]]);
}
这个问题有什么答案吗?@user3428228你解决了这个问题吗?到目前为止,我找到的最简单的解决方案是Across,我找到了这个解决方案,但需要在这里解释一下什么是
JWTAuthException
以及在config/auth.php
中身份验证默认值应该是什么样子like@YousefAltafJWTAuthException来处理错误“=>”令牌\u无效“&&”错误“=>”令牌\u过期身份验证默认值与jwt通过api用于身份验证的web auth(使用php artisan make:auth时)有关。感谢重播,我确实完成了此解决方案,但仍然面临此问题。请查看此问题并告诉我您的想法。
function __construct()
{
Config::set('jwt.user', Admin::class);
Config::set('auth.providers', ['users' => [
'driver' => 'eloquent',
'model' => Admin::class,
]]);
}