流明 - 非基于令牌的验证?

时间:2017-05-18 20:24:01

标签: php laravel lumen

我第一次尝试使用流明来创建一个宁静的后端服务。

我以前常常使用laravel工作但是我已经卡在了autentication。我无法找到相关的任何教程。

我甚至不确定我的逻辑是否安全。我会收到一封包含电子邮件和密码的帖子请求,然后我想检查细节是否正确等,并对用户进行身份验证。

我觉得我错过了一些东西,这是lumes带有标准的东西还是我需要重写Auth服务

2 个答案:

答案 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令牌,这也使得它非常简单并且允许您不传递电子邮件和密码。

https://github.com/tymondesigns/jwt-auth

答案 1 :(得分:0)

对于遇到此问题的任何人。这就是我解决它的方法:

在auth serviceProvider(引导方法)中,检查是否存在授权标头。如果有一个,它应该包括一个apiToken,你可以验证并继续正常流程。

如果没有授权标头,您可以检查请求变量以获取电子邮件和密码。验证登录,并在成功时保存新的apiToken。我将此令牌返回到前端,并创建了一个处理所有ajax请求的功能,以将此令牌包含在标头中。我还实现了一个函数来处理我的前端应用程序中的每个响应,当它重定向到登录页面时,会检查401。

使用这种方法,您可以使用两种auth方法,并且可以通过您的应用程序使用Auth :: user()。只需确保使用Auth中间件处理登录页面!