laravel auth与api响应不同的数据库

问题描述 投票:0回答:1

我有同样的情况与laravel custom authentication based on API response call需要一个答案,因为这篇文章没有

laravel laravel-authentication
1个回答
0
投票

首先安装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/的回购

对于前端,一旦您从请求中发回用户令牌,它实际上取决于您使用的语言/框架。

© www.soinside.com 2019 - 2024. All rights reserved.