【问题标题】:laravel 5.2 building api Authlaravel 5.2 构建 api 身份验证
【发布时间】:2017-07-03 20:28:34
【问题描述】:

我在 cordova 中构建了一个混合应用程序并使用 laravel 作为 api,但我对 Auth:api 有点困惑,我找不到任何解释我想要什么的教程! 我想知道用户如何从他手机上的应用程序到我的 laravel api 进行身份验证,据我所知,我将使用一个 api_token(随机字符串),我将存储在用户表上,这很好但是我将如何使用它对用户进行身份验证以及如何让用户通过所有请求发送它?我可以将其存储在应用程序中并继续发送吗?我坚持登录!如何第一次登录用户?我要使用 laravel 提供的登录名还是为此建立一个新的登录名? 请帮忙

【问题讨论】:

    标签: php laravel api cordova authentication


    【解决方案1】:

    对于 Laravel 5.2 中 auth:api 守卫的使用,请参阅 https://andrew.cool/blog/64/How-to-use-API-tokens-for-authentication-in-Laravel-5-2 似乎相当彻底。

    现在回答你剩下的问题:

    对于登录,您需要一个 API 调用,客户端将使用该 API 调用来登录,假设:

    POST logins

    与身体:

    {
      "email": "user@example.com",
      "password": "password"
    }
    

    在 Laravel 中可以表示为:

    Route:post('logins', 'MyApiController@login');

    现在在MyApiController::login() 方法中,您将检查提供的凭据emailpassword,如果它们与您数据库中的记录匹配,那么您将回复api_token。该 api_token 可以即时创建(使其难以破解),或者如果用户已经拥有api_token,您可以返回那个。这取决于您的到期政策,如果您希望登录也意味着注销其他设备等。

    如果凭据不匹配,您将回复 400 Bad Request,在这种情况下,客户端应尝试再次登录。

    对于您的其他问题,是的,客户端应用必须记住 api_token 并将其包含在每个需要它的 API 调用中

    请注意 Laravel 按特定顺序搜索 api_token,如下面的代码所示(即 Laravel 5.4)。在我上面给你的链接中,有关于如何包含 api_token 的说明。

    public function getTokenForRequest()
    {
        $token = $this->request->query($this->inputKey);
    
        if (empty($token)) {
            $token = $this->request->input($this->inputKey);
        }
    
        if (empty($token)) {
            $token = $this->request->bearerToken();
        }
    
        if (empty($token)) {
            $token = $this->request->getPassword();
        }
    
        return $token;
    }
    

    【讨论】:

    • 谢谢,如果我这样做了,Auth::guard('api')->user() 可以返回经过身份验证的用户吗?
    • 会的,查看 TokenGuard::user() 了解详情
    • packagist.org/packages/support/remote-auth 使用这个包,它易于集成并提供许多功能来远程管理用户
    猜你喜欢
    • 2016-04-23
    • 2018-11-22
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2017-02-26
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多