Laravel登录后一直注销我

时间:2019-06-07 21:32:34

标签: laravel

我已经设置了Laravel。我正在运行多个域。在昨天之前,我有一个顶级域和几个子域。昨天我添加了另一个TLD,一切开始变得很奇怪。具体来说,当尝试登录admin部分时,它将重定向到主页。我只有一名管理员,但服务器域已进入该站点。我的路线分组了:

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {

有时实际上是将我带入管理员,但是一旦单击链接,我就会注销并重定向到主页。我也一直在控制台中看到401错误。

是什么原因造成的?

编辑

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
        Route::get('/', 'AdminController@index');
        Route::get('/pages', 'AdminController@pages');
        Route::get('page/create', 'AdminController@createPagePage');
        Route::post('createPage', 'AdminController@createPage');
        Route::get('/page/edit/{page_id}', 'AdminController@editPagePage');
        Route::post('editPage', 'AdminController@editPage');
});

$redirectTo = '/';

3 个答案:

答案 0 :(得分:2)

如果您对正确的域设置有信心。请验证以下几件事。

1。。您的config/session.php已正确设置为支持多个域。

'driver' => env('SESSION_DRIVER', 'file'),  // check /storage folder writtable recursivelly.

'domain' => env('SESSION_DOMAIN', null),  // verify if single domain is not given in .env or in settings.

'same_site' => null // it should not be strict if you have ajax request across these domain. I mean from javascript you may try to request to other domain.

etc...

2。。确认您的路线是否不在domain之下。像这样:

Route::group(['domain' => 'xxx'], function($params)
{
    // your routes..
});

3。。如果代码中添加了任何硬编码的域验证/条件或重定向。

4。。.env中的任何值都指向单个域。

5。也不要忘记清除缓存/编译视图/路线并删除临时文件一次。就像/app/bootstrap/storage

中生成的文件一样
// Clear Application Cache
php artisan cache:clear

// Clear route cache
php artisan route:cache

// Clear config cache
php artisan config:cache  


// Clear compiled view files
php artisan view:clear

6。。任何第三方软件包都可能包含域设置。确保验证/config文件夹中的文件。

7。。检查url rewrite中的.htaccess设置

8。-确认服务器上是否有任何代理设置或安装了任何软件-很少见。

如果仍然有问题,请重新启动apache/nginx服务,因为有时更改后配置可能不会生效,可能需要重新启动服务器。

希望它会有所帮助。

答案 1 :(得分:0)

您是否正确设置了SESSION_DOMAIN?

  

您可能会注意到的一件事是,当用户登录到一个商店并转到另一个商店时,会话不会保存。要解决此问题,我们需要在.env文件中添加SESSION_DOMAIN变量,例如:

     

SESSION_DOMAIN ='。example.com'

     

仅此而已,现在,用户会话将在我们应用程序中的所有商店/子域之间共享。

https://medium.com/@maxkostinevich/how-to-build-multi-domain-laravel-application-e6d87d5e507b

答案 2 :(得分:0)

如果您使用的是Linux,请尝试检查会话文件的权限并进行更改,以使应用程序可以在该文件上写入会话密钥;如果它不起作用,请尝试将会话驱动程序更改为数据库

如何更改会话驱动程序?

  1. 转到您的.env文件,然后将SESSION_DRIVER = file更改为SESSION_DRIVER = database。
  2. 创建会话迁移:php artisan session:table。
  3. composer dump-autoload。
  4. 最终迁移(php artisan迁移)。
相关问题