Laravel单点登录子域名

时间:2015-02-12 10:59:09

标签: single-sign-on subdomain laravel-5

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

  • api.domain.com
  • portal.domain.com

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

'driver' => 'cookie'

'driver' => 'file'

'domain' => '.domain.com'

'domain' => null

无论如何它都不起作用。无论如何,我得到401(未经授权)。为什么呢?

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

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

1 个答案:

答案 0 :(得分:1)

Laravel 5 subdomains auth:通过简单的HTTP通过AJAX和Once Basic进行单点注册。

如果您希望在Laravel上的子域名(例如api.domain.comportal.domain.com)之间进行单点注册,则必须执行此操作:

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

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

  2. 设置会话(config/session):

    'domain' => '.domain.com'

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

    crossdomain: true xhrFields: {withCredentials: true}

  4. 标题您的回复(例如.htaccess)必须包含:

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

  5. 现在,您可以从portal.domain.comapi.domain.com发出AJAX请求,并将基本身份验证的简单HTTP请求发送到api.domain.com