2017-05-18 49 views
0

我试着第一次使用流明来创建一个宁静的后端服务。流明 - 非基于令牌的保证?

我已经习惯了与laravel工作,但管腔我已经停留在autentication。我找不到任何教程。

我甚至不知道我的逻辑是安全这一点。低声地我收到一封包含电子邮件和密码的邮件请求,然后我想检查详细信息是否正确等并验证用户身份。

我觉得我失去了一些东西,就是这个东西,卢梅斯标配或将我需要重写验证服务

+0

管腔,AUTH与令牌处理(一般)。因此,在你的情况下,应该向auth服务发送一个post请求来获得一个令牌,然后在这之后的每个请求都会有与它一起发送的相同令牌来验证请求。然而,据我所知,这些都不是Lumen内置的。这实际上是为什么我使用完整的Laravel框架甚至API,除非我需要非常薄的东西。 – Samsquanch

回答

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不支持会话状态,您需要为每个请求传递电子邮件和密码。但是,一旦设置完成,您需要在流明中执行的操作是使用Auth::user()来抓取用户。

您还可以使用智威汤逊 - 身份验证它使用JSON网络令牌这也使得它很容易,让您不会绕过电子邮件和密码。

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

0

对于任何人谁遇到这个问题。这是我如何解决它:

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

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

有了这个办法,您可以使用两种认证方法,并且可以通过您的应用程序使用Auth :: user()。只要确保登录页面不是用Auth中间件处理的!