繁体   English   中英

laravel 5.2构建api身份验证

[英]laravel 5.2 building api Auth

我在cordova中构建了一个混合应用程序,并使用laravel作为api,但是我与Auth:api有点困惑,我找不到任何说明我想要的tuto! 我想知道用户如何从手机上的应用程序向我的laravel api进行身份验证,据我所知,我将使用api_token(随机字符串)存储在Users表中,这很好,但是我将如何使用它对用户进行身份验证以及如何使用户将其与所有请求一起发送? 我可以将其存储在应用程序中并继续发送吗? 我卡住了登录! 第一次如何登录用户? 我要使用laravel提供的登录名或为此建立一个新的登录名? 请帮助

有关在Laravel 5.2中使用auth:api保护的信息,请参阅https://andrew.cool/blog/64/How-to-use-API-tokens-for-authentication-in-Laravel-5-2

现在剩下的问题了:

对于登录,您将需要客户端用于登录的API调用,假设:

POST logins

与身体:

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

在Laravel中可以表示为:

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

现在,在MyApiController::login()方法中,您将检查提供的凭据emailpassword ,如果它们与数据库中的记录匹配,则您将使用api_token响应。 该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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM