Ant*_*ond 32 laravel laravel-5
使用5.0
在config/session.php我已设置'domain' => '.example.com'但它无法正常工作.我不能在这样的一个域上坚持会话.
我的网站有很多子域名:
vancouver.example.com
newyork.example.com
Run Code Online (Sandbox Code Playgroud)
等...它们托管在同一台服务器上,并且是相同的Laravel应用程序(共享相同的存储目录)
我使用正确的凭据登录,应用程序重定向到该网站上的另一个页面,此时我没有会话.var_dump(Auth::user())显示null即使我使用正确的凭据登录.
storage/framework/sessions 在那里显示了14个不同的文件,它们都适合我,在我开始测试之前我将它们清除了.
我将在下面附加我的AuthController @ postLogin方法,如果session.php可以正常工作 'domain' => null
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $request->only('email', 'password');
if ($this->auth->attempt($credentials, $request->has('remember'))) {
Session::flash('message', 'You are now logged in.');
Session::flash('status', 'success');
if (str_contains($_SERVER['HTTP_REFERER'], '?goto=')) {
$params = explode('?', $_SERVER['HTTP_REFERER'])[1];
$target = explode('=', $params)[1];
} else {
$target = '/';
}
return redirect($target);
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ond 45
弄清楚了.domain => '.example.com'在session.php中更新并清除相关网站的Cookie.
eng*_*qas 13
@gadss
你需要像这样添加会话表
php artisan session:table
composer dump-autoload
php artisan migrate
Run Code Online (Sandbox Code Playgroud)
并将.env改为
SESSION_DRIVER=database
还修改config/session.php
'driver' => env('SESSION_DRIVER', 'database') 和
'domain' => '.yourdomain.com'
Run Code Online (Sandbox Code Playgroud)
之后清除浏览器的缓存和cookie.
Kir*_*iya 10
您需要更新会话配置以在域范围内(包括子域)中保留会话。按照下面给出的步骤操作。
转到config/session.php并更新domain前缀.为config => '.your-domain.com'。
然后清除您的应用程序缓存,打开 Chrome DevTool 并转到Application > Application > Clear Storage。您还需要清除以前的cookie。
运行 artisan 命令php artisan config:cache或php artisan config:clear删除以前缓存的 Laravel 应用程序配置。
如果您使用数据库作为会话驱动程序,您需要为此创建一个会话表。运行命令php artisan session:table生成会话表迁移,然后使用php artisan migrate. 然后执行上面给出的三个步骤。
使用 Laravel 8 变得更加简单:
将SESSION_DOMAIN添加到您的.env文件中:
SESSION_DOMAIN=.yourdomain.tld
Run Code Online (Sandbox Code Playgroud)
清除配置缓存:
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
删除您的浏览器会话 cookie,然后会话将在您的所有子域之间共享。
就我而言,一旦在 www 上创建帐户,我就会自动登录用户到子域。领域。工作得很好。
| 归档时间: |
|
| 查看次数: |
23489 次 |
| 最近记录: |