我正在使用cordova构建一个混合应用程序并使用laravel作为api,但我对Auth:api有点困惑,我找不到任何tuto解释我想要的东西! 我想知道用户如何通过手机上的应用程序验证我的laravel api,据我所知我将使用api_token(随机字符串),我将存储在Users表上,这很好但是我将如何使用它来验证用户以及如何让用户通过所有请求发送它?我可以将它存储在应用程序中并继续发送吗?我坚持登录!如何第一次登录用户?我要使用laravel提供的登录信息,还是为此建一个新的? 请帮忙
答案 0 :(得分:1)
对于在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()
方法中,您将检查提供的凭据email
,password
,如果它们与您数据库中的记录匹配,那么您将使用api_token
回复。 api_token可以动态创建(使其难以打破),或者如果用户已经有api_token
,您可以返回该值。这取决于您的到期策略,如果您希望登录也意味着注销其他设备等。
如果凭据不匹配,那么您将使用400 Bad Request
进行回复,在这种情况下,客户端应尝试再次登录。
对于您的其他问题,是的,客户端应用必须记住api_token
并将其包含在需要它的每个API调用中。
请注意Laravel按照以下代码(即Laravel 5.4)中的特定顺序搜索api_token
。在上面给出的链接中,有关于如何包含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;
}