2015-11-04 105 views
0

我正在尋找一種基於之前在數據庫中設置的身份驗證類型來驗證客戶端的方法。所以,客戶端應該打到類似這樣的網址:api.com/client/service/method,所以根據url中的這個客戶端字段,我需要檢索在數據庫中爲該客戶端設置的認證類型,並嘗試使用該類型認證客戶端(例如HTTP Basic或OAuth)。Lumen多重身份驗證類型

我是Lumen的新手,所以我想知道你們是否有建議如何設計這個建議。這些要求是固定的,所以我需要按照其描述的方式實施。我關心應該如何組織這些認證模型,以及我怎樣才能找出哪種類型的認證用戶試圖發送請求?提前致謝。

回答

0

您可以簡單地在運行時根據驅動程序修改身份驗證驅動程序?

public function auth(array $credentials = [], $method) 
{ 
    switch ($method) { 
     case: 'oauth': 
      $driver = 'oauth';    

      break; 
     default: 
      $driver = 'eloquent'; 

      break; 
    } 

    // Set the authentication driver. 
    Config::set('auth.driver', $driver); 

    // Attempt authentication. 
    if (Auth::attempt($credentials)) { 
     // Ex. 
    } 
} 
+0

謝謝,只是一個問題。我試圖使用HTTP基本驅動程序進行身份驗證,但看起來像當我將$ driver設置爲值'basic'時,在您的示例中,實際上是EloquentUserProvider :: validateCredentials()get的調用?流明中支持HTTP Basic嗎? – Zed

+0

我真的不確定Lumen是否支持HTTP認證,在其文檔中找不到任何關於它的文檔... –

+0

我明白了。那麼,如果我安裝Laravel的認證軟件包https://github.com/illuminate/auth,是否可以使用基本的http驅動程序? – Zed