【发布时间】:2016-03-27 12:15:27
【问题描述】:
我有一个名为 www.example.com 的域,并从中创建了一个暂存环境,名为 stag.example.com。
然后我在我的服务器中将我的文件克隆到两个不同的文件夹 example 和 stag.example 文件夹。他们每个人都正确设置了 .env 文件。
我遇到的问题是,当我访问 www.example.com 时,它会生成一个名为 .example.com 的 laravel_session,我可以使用 facebook 登录。使用前面的点,laravel session 可以跨子域共享。
现在,如果我去 stag.example.com 并使用 facebook 登录,它似乎会去寻找名称为 .example.com 的 laravel 会话,而不是应用程序本身生成的会话,因此当我用 facebook 登录,我会在 AbstractProvider.php 第 191 行得到 InvalidStateException。
只有当我删除 .example.com laravel 会话时,我才能访问 stag.example.com 并使用 facebook 登录。
我使用子域设置登台环境的方法是否错误? 或者我们不应该使用子域作为暂存环境?
下面是生产环境的 .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=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
准备中
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
【问题讨论】: