我对 Laravel 和 Stackoverflow 都是新手,所以如果我的问题格式不正确,我深表歉意。任何与此有关的提示将不胜感激。
我最近设法使用 jwt-auth 在我的 Laravel API 上实现了令牌身份验证。
我可以使用 jwt-auth 中间件保护我的 api 路由,以确保特定用户已收到令牌(登录)。
Route::group(['middleware' => ['jwt.auth']], function() {
// List Books
Route::get('books', 'BookController@index');
)};
JWT 在我创建的名为 APILoginController 的控制器中创建,其中包含:
public function login(Request $request)
{
// check the users credentials
$credentials = $request->only('email', 'password');
try {
if (! $token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'Invalid Credentials'], 401);
}
} catch (JWTException $e) {
return response()->json(['error' => 'could_not_create_token'], 500);
}
// the users credentials are correct - return web token
$user = Auth::user();
return response()->json(compact('token', 'user')) ;
}
我在我的用户表中添加了一个 is_admin 字段
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->integer('is_admin');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
我希望我能够使用此字段来保护某些路由免受 is_admin = 0 的普通用户的访问,并且只允许管理员 (is_admin = 1) 访问它们。我不知道这是否是解决这个问题的正确方法,但它似乎是最简单的。
任何帮助或指导将不胜感激,因为我已经为此苦苦挣扎了一段时间。我遇到的大多数教程似乎都创建了另一个带有角色的表,但这对于我的技能水平和我正在尝试创建的应用程序来说似乎有点矫枉过正和复杂。
亲切的问候,马修