我第一次尝试使用流明来创建一个宁静的后端服务。
我以前常常使用laravel工作但是我已经卡在了autentication。我无法找到相关的任何教程。
我甚至不确定我的逻辑是否安全。我会收到一封包含电子邮件和密码的帖子请求,然后我想检查细节是否正确等,并对用户进行身份验证。
我觉得我错过了一些东西,这是lumes带有标准的东西还是我需要重写Auth服务
答案 0 :(得分:0)
似乎是您链接的文档。
$this->app['auth']->viaRequest('api', function ($request) {
// Return User or null...
});
将Request
类传入此函数。您需要从中搜集电子邮件和密码$request->get('email')
和request->get('password')
,检查以确保它们有效。
我不确定使用流明做到这一点的最佳方法或者有多少可用,以便让它变得简单,你可以做以下的事情......
$this->app['auth']->viaRequest('api', function ($request) {
$email = $request->get('email');
$password = $request->get('password');
$user = \DB::table('users')->where('email', $email)->first();
// Invalid Email
if ($user === null) {
return null;
}
// Check if password matches
if ( \Hash::check($user->password, $password) ) {
return $user;
}
// Invalid password
return null;
});
请记住,Lumen不支持您需要传递每个请求的电子邮件和密码的会话状态。但是,一旦设置好,您在Lumen中需要做的只是使用Auth::user()
来抓取用户。
您还可以使用jwt-auth,它使用JSON Web令牌,这也使得它非常简单并且允许您不传递电子邮件和密码。
答案 1 :(得分:0)
对于遇到此问题的任何人。这就是我解决它的方法:
在auth serviceProvider(引导方法)中,检查是否存在授权标头。如果有一个,它应该包括一个apiToken,你可以验证并继续正常流程。
如果没有授权标头,您可以检查请求变量以获取电子邮件和密码。验证登录,并在成功时保存新的apiToken。我将此令牌返回到前端,并创建了一个处理所有ajax请求的功能,以将此令牌包含在标头中。我还实现了一个函数来处理我的前端应用程序中的每个响应,当它重定向到登录页面时,会检查401。
使用这种方法,您可以使用两种auth方法,并且可以通过您的应用程序使用Auth :: user()。只需确保使用Auth中间件处理登录页面!