我正在使用 Laravel 4 构建 REST API。此 API 将从移动应用程序访问。我想扩展 Laravel 的内置身份验证服务以使用 token 。
移动应用程序为特定用户调用 API 到端点 users/login
。
然后它会生成一个新 token 并将其插入相应用户 ID 的 token 表中。请参阅下面的 token 表结构:
id | userId | token | created_at | updated_at | expires_at
我想编写一个身份验证提供程序来覆盖 retrieveByID
、retrieveByCredentials
和 validateCredentials
函数。
这让移动应用程序在其 header 中使用 token 调用任何 API 方法,但没有任何用户凭据。
我正在使用 HTTP 在本地构建它,但之后它将是 HTTPS。
我按照不同的教程编写了 retrieveByCredentials
函数,如下所示:
public function retrieveByCredentials(array $credentials) {
$token = token::where('token', '=', $credentials['token'])->take(1)->get();
if ($token) {
$user = User::where('user', '=', $token->userId)->get();
return new GenericUser($user);
}
else {
return false;
}
}
我宣布
use token;
use user;
在我的 AuthUserProvider 类的开头,但我想这不是这样做的方法。
代码返回:
Undefined property: Illuminate\Database\Eloquent\Collection::$userId
我想我缺少的是如何在此类中访问我的模型,以便我可以检索用户并验证 token 。你能帮忙吗?
最佳答案
实现自定义身份验证是重新邀请轮子。我决定使用 OAuth 2.0 包,https://github.com/lucadegasperi/oauth2-server-laravel并且可以让它满足我的需求
关于php - Laravel 4 - 如何为从移动应用程序访问的 REST API 实现自定义身份验证提供程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22918553/