【问题标题】:laravel auth with api response different databaselaravel auth 与 api 响应不同的数据库
【发布时间】:2019-06-30 20:07:43
【问题描述】:

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

【问题讨论】:

    标签: laravel laravel-authentication


    【解决方案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/浏览的repo

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

    【讨论】:

    • 我没有数据库。我使用 guzzle 发出请求并使用不记名令牌获得响应
    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 2020-11-29
    • 2017-03-16
    • 2020-08-12
    • 2019-08-02
    • 2018-07-16
    • 1970-01-01
    • 2020-09-01
    相关资源
    最近更新 更多