Laravel 使用子域进行单点登录

Laravel single sign on with subdomains

如何在 Laravel-5 上使用子域实现单点登录? 我有:

我尝试在 /config/session 中设置域和驱动程序参数:

'driver' => 'cookie'

'driver' => 'file'

'domain' => '.domain.com'

'domain' => null

无论如何都行不通。无论如何,我得到 401(未经授权)。为什么?

在控制器中(这是标准的laravel认证):

public function __construct()
{
    $this->middleware('auth');
}

Laravel 5 子域认证:单个 sign-up 通过 AJAX 和一次基本通过简单的 HTTP。

如果您想在 Laravel 上的子域(例如 api.domain.comportal.domain.com)之间有单个 sign-up,您必须这样做:

  1. 对于您的 api 使用下一个过滤器(例如在控制器 cunstructor 中):

    if (!Auth::check()) $this->middleware('auth.basic.once');

  2. 设置你的 session (config/session):

    'domain' => '.domain.com'

  3. 在jQuery.ajax中使用下一个参数:

    crossdomain: true xhrFields: {withCredentials: true}

  4. Headers 您的回复(例如在 .htaccess 中)必须包含:

    Header set Access-Control-Allow-Origin "http://api.domain.com" Header set Access-Control-Allow-Credentials true

现在您可以将 AJAX-request 从 portal.domain.com 变为 api.domain.com 并使用基本身份验证将 HTTP-request 变为 api.domain.com