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名称。
我可以像这样设置cookie名称吗? 'cookie'=>'stag.example', –
事实上,我会使用一个环境变量,所以您不会意外更改您的活动服务器上的cookie名称。 – Jerodev
但是,一旦我将cookie名称塞入stag.example。 当我做一个表单发布,它给了我TokenMismatchException在VerifyCsrfToken.php 53行: –