我有同样的情况,基于 API 响应调用的 laravel 自定义身份验证 需要一个答案,因为这篇文章没有
问问题
203 次
1 回答
-1
首先安装 Laravel 护照。
完成后,创建一个自定义控制器并为其创建一个 api 路由,而无需任何中间件。
public function login(Request $request)
{
$details = $request->only('email', 'password');
if (Auth::attempt($details)) {
$user = Auth::user();
if ($user->verified) {
$user->token = $user->createToken('App')->accessToken;
return response()->json([
'user' => $user
], $this->successful_response_code);
}
return response()->json([
'error' => 'not_verified'
], $this->failure_response_code);
}
return response()->json([
'error' => 'details_incorrect'
], $this->unauthorized_response_code);
}
从上面删除用户验证检查(在移动设备上更难输入代码。)
因此,现在用户使用用户名和密码发布到该路由,作为回报,他们将使用访问令牌返回他们的用户对象,该访问令牌可用于您拥有的任何受auth:api
中间件保护的路由。
只需使用用户令牌作为标头向您想要的路由发出请求Authorization: Bearer ******(token)
这是一个示例路线。
Route::namespace('API\V1')->group(function () {
Route::namespace('Auth')->group(function () {
Route::post('login', 'LoginController@login');
Route::post('register', 'RegisterController@register');
Route::post('verify', 'VerificationController@verify');
});
Route::middleware('auth:api')->group(function () {
Route::namespace('User')->group(function () {
Route::get('users', 'UserController@index');
});
Route::namespace('Conversation')->group(function () {
Route::get('conversations', 'ConversationController@index');
Route::post('conversations', 'ConversationController@store');
Route::patch('conversations/{conversation}', 'ConversationController@update')->middleware('can:update,conversation');
});
});
});
这是一个你可以通过https://github.com/michaelmano/laravel-login/浏览的仓库
至于前端,一旦您从请求中发回了用户令牌,它实际上取决于您使用的语言/框架。
于 2019-02-06T21:15:37.260 回答