Laravel 使用子域进行单点登录
Laravel single sign on with subdomains
如何在 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');
}
Laravel 5 子域认证:单个 sign-up 通过 AJAX 和一次基本通过简单的 HTTP。
如果您想在 Laravel 上的子域(例如 api.domain.com
和 portal.domain.com
)之间有单个 sign-up,您必须这样做:
对于您的 api 使用下一个过滤器(例如在控制器 cunstructor 中):
if (!Auth::check())
$this->middleware('auth.basic.once');
设置你的 session (config/session
):
'domain' => '.domain.com'
在jQuery.ajax中使用下一个参数:
crossdomain: true
xhrFields: {withCredentials: true}
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
如何在 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');
}
Laravel 5 子域认证:单个 sign-up 通过 AJAX 和一次基本通过简单的 HTTP。
如果您想在 Laravel 上的子域(例如 api.domain.com
和 portal.domain.com
)之间有单个 sign-up,您必须这样做:
对于您的 api 使用下一个过滤器(例如在控制器 cunstructor 中):
if (!Auth::check()) $this->middleware('auth.basic.once');
设置你的 session (
config/session
):'domain' => '.domain.com'
在jQuery.ajax中使用下一个参数:
crossdomain: true xhrFields: {withCredentials: true}
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