我花了一天的时间试图理解如何在我的API中注入JWT,但不幸的是,我没有取得任何成功。
我正在使用Lumen框架。我认为,JWT 用于Lumen和Laravel的JWT有一个很好的库。我已经通过composer成功地安装了它,它看起来工作正常,但是我在我的项目中没有默认的用户模型,我可以很容易地迁移到默认值,但是我想了解所有这些东西是如何工作的。
为了使问题更简短,我不会在这里发布示例代码,这里是JWT示例。
我对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未找到的异常。
请帮助找到这些问题的答案:
如果有人能帮助解决和理解这个问题,我将不胜感激。
谢谢大家的帮助。
发布于 2015-10-05 01:23:47
很好的问题,默认情况下,laravel中的用户表将是用户。
可以使用$table属性在模型中设置表名。
Auth::attempt(['email' => $email, 'password' => $password])
或Auth::attempt(['username' => $username, 'password' => $password, 'active' => 1], $remember)
。是的,检查了密码,还可以使用Hash:: check ()手动检查密码。$table
属性定义为$table = 'Books';
。在您跳入像Laravel这样的框架之前,我真的推荐深入学习面向对象的知识。虽然你想这样做是很好的,但它会误导你。
还有一个快速的提示,如果你要继续与拉里/内腔。在创建表时,请记住添加一个updated_at和created_at日期时间字段,如果不这样做,那么在模型中将时间戳属性设置为false,如:public $timestamps = false;
。
祝你好运!
发布于 2015-11-19 19:31:51
- if not valid, throw error like,
- response()->json(['error' => 'invalid\_credentials', 'message' => 'Invalid Credentials'], 401)
- If success, generate token like,
- response()->json(compact('token'));
https://stackoverflow.com/questions/32935035
复制相似问题