我在cordova构建了一个混合应用程序,并使用laravel作为api,但是我有点混淆了Auth:api,我找不到任何说明我想要什么的教程!我想知道用户如何从手机上的应用程序获得身份验证到我的laravel,据我所知,我将使用api_token (随机字符串)存储在用户表上,这很好,但我如何用它验证用户身份,以及如何让用户发送所有请求?我能把它存储在应用程序里然后继续发送吗?我被登录卡住了!如何首次登录用户?我要用laravel提供的登录还是为这个建立一个新的?请帮帮忙
发布于 2017-02-15 23:11:09
对于auth:api
警卫在Laravel5.2中的使用,请参阅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()
方法中,您将检查提供的凭据email
、password
,如果它们与数据库中的记录匹配,那么您将使用api_token
进行响应。可以动态创建api_token (使其难以中断),或者如果用户已经拥有api_token
,则可以返回该api_token
。这取决于您的过期策略,如果您希望登录也意味着其他设备的注销等等。
如果凭据不匹配,那么您将使用400 Bad Request
进行响应,在这种情况下,客户端应该再次尝试登录。
对于另一个问题,客户端应用程序api_token
是的,必须记住,并将其包含在每个需要它的API调用中,。
注意,Laravel按照特定的顺序搜索api_token
,如下面的代码(即Laravel5.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;
}
https://stackoverflow.com/questions/42244962
复制相似问题