我正在使用Laravel 4构建REST API.可以从移动应用程序访问此API.我想扩展Laravel内置的身份验证服务以使用令牌.
移动应用程序将@R_301_359@的API调用到端点用户/登录.
然后,它会生成一个新令牌,并将其插入令牌表中以获取相应的用户ID.请参阅下面的令牌表的结构:
id | userId | token | created_at | updated_at | expires_at
我想编写一个Authentification Provider来覆盖retrieveByID,retrieveByCredentials和validateCredentials函数.
这使移动应用程序可以在其标头中使用令牌调用任何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
我猜想的是,如何在这个类中访问我的模型,以便我可以检索用户并验证令牌.你能帮忙吗?
解决方法
实现自定义身份验证是重新邀请轮子.我决定使用OAuth 2.0软件包,https://github.com/lucadegasperi/oauth2-server-laravel并且可以使其满足我的需求