我无法登录我的 Laravel 应用程序

我无法登录我的 Laravel 应用程序

所以我和Laravel应用程序出现问题,所以我想收取它的早期备份版本的费用。该应用程序来自我目前工作的公司,令我惊讶的是,在我之前的员工没有任何 git 存储库或任何东西,所以我不得不直接复制一个旧项目。现在我遇到了登录部分的问题:它根本不起作用。

输入用户名和密码后,什么都没发生,页面刷新。我已经通过命令确认数据库(包含用户)存在并且正常工作。需要说明的是,该项目完全托管在流浪汉我通过 WinSCP 连接的 VM。

我怀疑登录数据库连接部分有问题,但我不知道是什么问题。我在这方面还是个新手。

顺便说一句,这个应用是公司的内网。我没有破坏原版,而是破坏了开发者版本,无论如何我都需要修复它,我有点绝望。

这是.env文件。我将输入“密码”bc company,而不是密码。

/*DELETED FOR COMPANY ISSUES*/

文件/config/database.php

/*DELETED FOR COMPANY ISSUES*/

文件login.blade.php

/*DELETED FOR COMPANY ISSUES*/

以及文件的一部分web.php,用于路线的文件:

Route::get('/', function () {
    return redirect('admin');
});
Route::group( ['middleware' => ['prevent-back']], function() {

    Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
    Route::post('login', 'Auth\LoginController@login');
    Route::get('logout', 'Auth\LoginController@logout')->name('logout');

    Route::get('admin', 'AdminController@index')->name('admin');
});


Route::group( ['middleware' => ['auth','prevent-back']], function() {

    Route::post('admin/changeuser/{user}', 'AdminController@changeLoggedUser')->name('admin.changeuser');    

    Route::post('notification/readall','NotificationController@doReadAll');    
    Route::get('notification/unread','NotificationController@getUnread');
    Route::post('notification/{notification}/read','NotificationController@doRead');    

编辑:我发现了一些可能有用的信息。我截取了 Laravel 通过浏览器告诉我的信息。

在此处输入图片描述

在此处输入图片描述


编辑2:按照说明操作后,我发现我的 ADLDAP 服务器无法正常工作。我尝试composer require adldap2/adldap2-laravel安装后,系统显示以下内容:

在此处输入图片描述

我也尝试过使用修补匠搜索用户和其他内容。我可以看到用户正在使用,App/Models/User:all();但如果我尝试以下操作,它将不起作用:

在此处输入图片描述

显然绑定不起作用。我不太熟悉它,但这里有一段不起作用的代码:

public function bind($username, $password, $sasl = false)
{
    if ($this->isUsingTLS()) {
        $this->startTLS();
    }

    if ($sasl) {
        return $this->bound = ldap_sasl_bind($this->getConnection(), null, null, 'GSSAPI');
    }

    return $this->bound = ldap_bind($this->getConnection(), $username, $password);
}

答案1

我怀疑您正在使用 laravel 6,目前 Adldap2 在 laravel 6 中不受完全支持,请尝试使用较低版本,例如版本 5.7 支持安装 Adlap2。

如果不是这种情况,请导航至配置然后打开目录验证.php滚动到提供商并确保活跃司机是雄辩或者数据库而不是 ldap

 'providers' => [
    'users' => [
        //REMOVE THIS 'driver' => 'ldap',
        'driver' => 'eloquent',
        'model' => App\User::class,
        'table' => 'users',
    ],

答案2

“一旦我输入用户名和密码,什么也不会发生,页面刷新”听起来像一个重定向循环。

验证所有重定向是否正确

  • 查看你的LoginController

它可能具有以下属性

protected $redirectTo = '/';

确保重定向到正确的 URL

  • 在您的web.php

    Route::get('/', function () {
        return redirect('admin');
    });
    

尽量不要这样做redirect('admin'),而只是回显一些文本以验证在此步骤之前执行的所有操作是否有效

  • 你最好有一个问题的答案这里

关于您的更新。

看来你的 Laravel 安装使用了Adldap2/Adldap2-Laravel

  • 您是否安装了 LDAP 服务器?
  • 特权用户(用于 Laravel 身份验证)是否已添加到 LDAP 服务器?
  • 您能从终端成功查询 ldap 服务器吗?
  • 尝试按照所述从 Laravel 查询 LDAP 服务器这里

例如,相应地更改以下命令:

    // Finding a user:
    $user = Adldap::search()->users()->find('john doe');

    // Searching for a user:
    $search = Adldap::search()->where('cn', '=', 'John Doe')->get();

看看这是否会出现错误,或者 $user 包含 NULL,或者 $user 包含预期结果。


更新2

您确定 Laravel 应用程序中的身份验证是通过 MySQL DB 而不是通过 LDAP 服务器完成的吗?

当您运行时App/Models/User:all();- 您通过 MySQL DB 连接,但在“编辑:”中,错误显示“无法联系 LDAP 服务器”。

在 Laravel 中可以验证管理员账户任何一个通过 MySQL或者LDAP(以及许多其他方法)。您的 Laravel 安装当前尝试通过 LDAP 服务器而不是 MySQL 进行身份验证。似乎 LDAP 服务器不存在。

通过尝试从命令行(而不是从 Laravel)连接到 LDAP 服务器来测试您是否有 LDAP 服务器。如何从客户端测试 LDAP 连接然后,检查该服务器上是否添加了管理员用户。

否则,如果您 100% 确定您的 Laravel 管理员帐户身份验证是通过 MySQL DB 完成的(管理员帐户及其密码存储在那里),则必须adldap2/adldap2-laravel从 Laravel 中删除包并将 Laravel 配置为不使用 LDAP 身份验证。

重要的!一定要使用 git 或其他版本控制系统,以免让事情变得更糟!

如果您不能 100% 确定 Laravel 身份验证是通过 MySQL 还是 LDAP 完成的,我不会删除adldap2/adldap2-laravel包,因为可能有人在您之前将其添加到 Laravel 安装中,并且您当前的 Laravel 设置正在尝试通过 LDAP 进行身份验证。因此,首先尝试通过登录 Vagrant 并尝试从命令行连接到 LDAP 服务器。如何从客户端测试 LDAP 连接或者检查 ldap (AD) 是否正在运行的简单方法或者使用 telnet 如下评论

相关内容