0
SSOを使用してLaravel 5.5にログインしようとしています。私はライブラリを使用しており、正常に動作し、データが正常に戻ってきます。しかし、Listener上でAuth :: loginやセッションデータを取得しようとすると保存されません。セッションは、アプリケーションの他のポイントからは正常に動作しますが、リスナーイベントでは正常に動作しません。今Laravel 5.5イベントリスナーを使用してログインしてください
<?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 ::ログイン(真$ laravelUser、)で、ユーザーが正しくログインしている、私はチェックをしました。しかし、ページが最後のURLに送信されるとすぐに、セッションはなくなります。
すべてのアイデア?
に見られるように、それは、デフォルトで含まれてい「ウェブ」がを配置すること私はあなたが実際にセッションクッキーで応答を返していないという問題があると考えています。したがって、(次の行に)ユーザをログインした直後にチェックすると、そのユーザは_this_リクエストに対して認証されていますが、それ以降のリクエストでは、前のセッションに再関連付けされていません。 – fubar
そして参考までに、 'find'メソッドを使って' id'でユーザを検索することができます。例えば。 '$ laravelUser = User :: find($ id);' – fubar
@fubar私は知っています。私は実際にそこにIDフィールドを使用していません。私はコードを単純化しました。私は問題がルートのためのミドルウェアにあると思っています(ベンダーからのものです)。私は明日それを確認します。 – Eduardo