2015-11-04 106 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