【发布时间】:2016-01-01 07:24:46
【问题描述】:
我花了一天时间试图了解如何在我的 API 中注入 JWT 身份验证,但不幸的是我没有取得任何成功。
我正在使用 Lumen 框架。我认为 JWT Auth JWT For Lumen And Laravel 的库很棒。我已经通过composer成功安装了它,看起来它工作正常,但我的项目中没有默认用户模型,我可以轻松迁移到默认值,但我想了解所有这些东西是如何工作的。
我不会在这里发布示例代码,为了让问题更短,这里是JWT Example。
我对 Laravel 和 Lumen 比较陌生,所以也许我的问题已经得到解答,但我花了几个小时试图找到文档并理解 Auth 框架中的核心。
我有自定义用户模型
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model {
const CREATED_AT = 'createTime';
const UPDATED_AT = 'updateTime';
public $timestamps = true;
protected $table = 'user';
protected $guarded = ['password','login','id','activationEmail'];
protected $hidden = [ 'password' ];
protected function getDateFormat()
{
return 'U';
}
}
当然还有自定义控制器将请求路由到它。
但问题是我最近发现 JWT 库 使用 Auth 来实现 jwt 身份验证。
并且 Auth 使用默认用户模型做一些神奇的事情,这反过来会影响UserInterface,我的模型是否也应该实现这个接口?
我尝试在配置中明确指定我的模型,但它尝试使用旧模型并抛出 App\User 未找到的异常。
请帮助找到这些问题的答案:
默认情况下框架如何知道我的用户表的名称是什么以及它有哪些字段?或者它假设它有 users 名称并且表的列是常见的,如电子邮件、登录名、密码等。
调用尝试方法时会发生什么?框架尝试通过电子邮件查找用户,例如,如果找到,则检查密码?
如何指定我的自定义模型,我尝试更改配置并得到此问题中描述的异常Missing argument 1 for Illuminate\Auth\AuthManager::createDriver() lumen and JWT
如果有人帮助解决和理解这个问题,我将不胜感激。
感谢大家的帮助。
【问题讨论】:
标签: php laravel authentication jwt lumen