Laravel - 在使用社交名称时将子域名作为暂存环境

问题描述:

我有一个名为www.example.com的域名,并从中创建了一个暂存环境,名为stag.example.com。Laravel - 在使用社交名称时将子域名作为暂存环境

在我的服务器中,我然后将我的文件克隆到两个不同的文件夹示例和stag.example文件夹。他们每个人都有正确的.env文件设置。

我遇到的问题是当我访问www.example.com时,它会生成一个名为.example.com的laravel_session,我可以用facebook登录。随着时间的推移,laravel会议可以跨子域共享。

现在,如果我去了stag.example.com并使用facebook登录,它似乎会去寻找名为.example.com而不是应用程序本身生成的会话的laravel会话,因此,当我用facebook登录,我将在AbstractProvider.php第191行处得到InvalidStateException。

我可以访问stag.example.com并仅在我删除.example.com laravel会话时使用Facebook登录。

我在做错误的方式来设置使用子域的登台环境? 或者我们不应该使用子域作为分段环境?

下面是生产

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=**Secrect** 
APP_DOMAIN=example.com 

DB_HOST=localhost 
DB_DATABASE=example 
DB_USERNAME=**Secrect** 
DB_PASSWORD=**Secrect** 

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

SESSION_DOMAIN=example.com 

MAIL_DRIVER=mailgun 
MAIL_HOST=smtp.mailgun.org 
MAIL_PORT=587 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPTION=null 

S3_KEY=**Secrect** 
S3_SECRET=**Secrect** 
S3_BUCKET=**Secrect** 

MAILGUN_DOMAIN=**Secrect** 
MAILGUN_SECRET=**Secrect** 

FB_CLIENT_ID=**Secrect** 
FB_CLIENT_SECRET=**Secrect** 
FB_REDIRECT=http://example.com/login/facebookCallback 

的.ENV文件分期

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=**Secrect** 
APP_DOMAIN=example.com 

DB_HOST=localhost 
DB_DATABASE=example 
DB_USERNAME=**Secrect** 
DB_PASSWORD=**Secrect** 

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

SESSION_DOMAIN=stag.example.com 

MAIL_DRIVER=mailgun 
MAIL_HOST=smtp.mailgun.org 
MAIL_PORT=587 
MAIL_USERNAME=null 
MAIL_PASSWORD=null 
MAIL_ENCRYPTION=null 

S3_KEY=**Secrect** 
S3_SECRET=**Secrect** 
S3_BUCKET=**Secrect** 

MAILGUN_DOMAIN=**Secrect** 
MAILGUN_SECRET=**Secrect** 

FB_CLIENT_ID=**Secrect** 
FB_CLIENT_SECRET=**Secrect** 
FB_REDIRECT=http://stag.example.com/login/facebookCallback 

的问题是,Laravel希望你使用与会话子域时,链接到同一个项目。

有几种解决方案。
例如,您正在使用另一个可以在项目之间共享的会话驱动程序。

另一种方法是在两个项目中使用另一个cookie名称。您可以在config\session.php中更改cookie名称。您可以在此处添加getenv()函数,以便您可以在您的文件中设置cookie名称。

+0

我可以像这样设置cookie名称吗? 'cookie'=>'stag.example', –

+0

事实上,我会使用一个环境变量,所以您不会意外更改您的活动服务器上的cookie名称。 – Jerodev

+0

但是,一旦我将cookie名称塞入stag.example。 当我做一个表单发布,它给了我TokenMismatchException在VerifyCsrfToken.php 53行: –