首页 > 解决方案 > Laravel 身份验证和“子域”

问题描述

我正在使用 Laravel 5x,我试图让用户从(例如)登录:

https://dev.example.com/example_authentication/public/login(这是 laravel 的一个实例)

然后当我访问时:

https://dev.example.com/mysecondwebsite/public(这是 laravel 的另一个实例)我可以调用:

$user = Auth::user();

然后获取它是否是用户、管理员、它的名称等。

我尝试的是在 example_authentication 和 mysecondwebsite 的 .env 文件中添加

SESSION_DOMAIN='.example.com'

但会话不会持续。

关于发生了什么的任何想法?

更新:

我在第二个 laravel 应用程序上使用

$user = Auth::user();

出于某种原因,它正在生成自己的会话,作为记录,两个实例具有相同的:

 'cookie' => 'vanguard_session'
  the same APP_KEY
  the same SESSION_DRIVER

标签: phplaravelauthentication

解决方案


所以我无法将第一个项目会话集成到后者,但找到了一个$_SESSION变量的替代方案:

如果你想让这个变量适用于两个项目,你必须session_start();在两个项目的 public/index.php 上设置。

<?php
session_start();

之后,您可以在每个控制器上使用 $_SESSION 变量,这将显示在您服务器上的任何 PHP Web 应用程序上,我想使用 laravel 的传统方式,但没有运气,关于此要求的信息不多,所以这是另一种选择。

您可以在任何控制器、视图或中间件中像这样使用此变量:

$_SESSION["setyourvarname"]="your value";

然后在控制器、视图或中间件上你可以

$myvariable = $_SESSION["myvarname"]

推荐阅读