2017-05-18 143 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中間件處理的!