php - Laravel 4 - 如何为从移动应用程序访问的 REST API 实现自定义身份验证提供程序?

标签 php api rest authentication laravel-4

我正在使用 Laravel 4 构建 REST API。此 API 将从移动应用程序访问。我想扩展 Laravel 的内置身份验证服务以使用 token 。

移动应用程序为特定用户调用 API 到端点 users/login

然后它会生成一个新 token 并将其插入相应用户 ID 的 token 表中。请参阅下面的 token 表结构:

id | userId | token | created_at | updated_at | expires_at

我想编写一个身份验证提供程序来覆盖 retrieveByIDretrieveByCredentialsvalidateCredentials 函数。

这让移动应用程序在其 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/

相关文章:

api - 过滤用户轨道时的 Soundcloud API 错误

amazon-web-services - 使用 PostMan 上传多部分 Amazon S3 Rest API 时出现问题

java - SpringMVC 处理剩余 Controller 中的错误

php - 如何自定义 Zend_Form 正则表达式错误消息?

php - 交响乐问题。如何在 action.class 中使用 get_partial?

python - 使用Python的Requests库,无法调用API来正确格式化

mysql连接休息服务

javascript - 按输入形式排名值

php - Javascript Jquery 代码第一次可以工作,下次就不行了

node.js - 如何使用 NodeJs (typescript) 和 Sequelize 5 (PostgreSQL) 进行单元测试?