所以,我正在尝试使用SSO登录Laravel 5.5上的用户。我正在使用一个库,它工作正常,数据正确回来。但是当在Listener上尝试Auth :: login或任何Session数据时,它不会被保存。 Sessions在应用程序的任何其他位置都可以正常工作,但在Listener Events中则不行。
<?php
namespace App\Listeners;
use App\User;
use Illuminate\Support\Facades\Auth;
use \Aacotroneo\Saml2\Events\Saml2LoginEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class AuthListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param object $event
* @return void
*/
public function handle(Saml2LoginEvent $event)
{
$messageId = $event->getSaml2Auth()->getLastMessageId();
// your own code preventing reuse of a $messageId to stop replay attacks
$user = $event->getSaml2User();
$attributes = $user->getAttributes();
$id = $attributes['id'];
$laravelUser = User::where('id', $id)->first();
\Session::push('name', 'test');
Auth::login($laravelUser, true);
}
}
现在,在 Auth :: login($ laravelUser,true),用户已正确登录,我确实已检查。但是一旦页面刷新发送到最终URL,会话就会消失。
任何想法?
答案 0 :(得分:0)
我在Laravel 5.5中遇到了确切的问题。您似乎缺少 saml2_settings.php 文件中的 routesMiddleware 设置。说明你需要一个包含 StartSession 的小组,所以你可能想把&#39; web&#39; 放在那里,默认包含它,如图所示在Kernel.php中