У меня есть брандмауэр laravel 5, который отправляет jwt-токен как ответ json при входе в систему с jwt-auth.Добавить роль пользователя в jwt, laravel 5 jwt-auth
Теперь я хотел бы добавить роль пользователя в JWT маркер, который Laravel посылает, я попытался следующим образом:
Это мой текущий контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Illuminate\Database\Eloquent\Model;
use App\User;
class AuthenticateController extends Controller
{
public function authenticate(Request $request)
{
// grab credentials from the request
$credentials = $request->only('email', 'password');
$user = User::where('email', '=', $credentials['email'])->first();
$customClaims = ['role' => $user->role];
try {
// attempt to verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials, $customClaims)) {
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'));
}
}
?>
Есть ли уборщик способ сделать это ?
JWT для php плохо документирован. Сделать простую систему входа/выхода является болезненным! См. Мои вопросы об этом. – Maykonn
Я искал то же самое, нашли ли вы решение? – kitensei
Я пошел с решением выше, даже если это еще один запрос. Не могли найти более чистого решения – RVandersteen