【发布时间】:2017-05-09 19:02:53
【问题描述】:
我已经安装了这个 github Laravel 5 Saml2 包: https://github.com/aacotroneo/laravel-saml2
我的登录工作正常,正在进行身份验证,并且数据正在正确传回。我有一个 LoginListener,它成功地捕获了正确的用户信息并从数据库中返回了一个有效的用户。但是,当我尝试使用 Auth::login 时,它不会在侦听器句柄函数之外持续存在,并且会进入 SAML 身份验证和侦听器之间的无限循环。
这是我的听众:
namespace App\Listeners;
use \Aacotroneo\Saml2\Events\Saml2LoginEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Auth;
use Illuminate\Session\Middleware\StartSession;
use App\Http\Controllers\HomeController;
class LoginListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
}
/**
* Handle the event.
*
* @param Saml2LoginEvent $event
* @return void
*/
public function handle(Saml2LoginEvent $event)
{
$user = $event->getSaml2User();
$userData = [
'id' => $user->getUserId(),
'attributes' => $user->getAttributes(),
'assertion' => $user->getRawSamlAssertion()
];
//check if email already exists and fetch user
$user = \App\Models\User::where('username', $userData['attributes']['NameID'][0])->first();
Auth::guard('web')->login($user);
Session::save();
}
}
我已在我的 saml2-settings 文件中的 routesMiddleware 设置中添加了“web”,正如在多个地方所建议的那样,但没有任何效果。有人在某个地方有这样的工作示例,我可以深入研究一下我做错了什么吗?
【问题讨论】:
标签: php laravel-5.2 saml-2.0