web-dev-qa-db-ja.com

laravelアプリケーションにログインできません

Laravelアプリケーションを使用していて、何かがうまくいかなかったので、それの初期のバックアップバージョンを請求しました。アプリケーションは私が現在働いている会社からのものであり、gitリポジトリなどをまったく持っていない前に従業員を驚かせたので、文字通り古いプロジェクトをコピーする必要がありました。ログイン部分に問題があります。単に機能しません。

ユーザー名とパスワードを入力すると、何も起こらず、ページが更新されます。私はすでに(ユーザーと共に)データベースが存在し、コマンドを介して正しく機能していることを確認しました。プロジェクトは完全にVagrantVM私がWinSCPを介して接続する)でホストされていると言うことが重要です。

ログインデータベース接続の部分に問題があると思いますが、それが何かはわかりません。ここは初心者です。

ところで、アプリは会社のイントラネットです。私は元のバージョンを台無しにしたわけではありませんが、開発者バージョンです。とにかくそれを修正する必要があり、私は少し必死です。

これが_.env_ファイルです。パスの代わりに、「パスワード」のbc会社を入力します。

_/*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');    
_

[〜#〜] edit [〜#〜]:(たぶん?)役に立つと思われる情報を見つけました。情報のスクリーンショットを撮りましたLaravel=ブラウザで教えてくれました。

enter image description here

enter image description here


EDIT2:手順に従って、ADLDAPサーバーが正しく動作していないことを発見しました。 _composer require adldap2/adldap2-laravel_をインストールしようとすると、インストールが試行されますが、次のように表示されます。

enter image description here

私は Tinker を使用してユーザーやものを検索することも試みました。ユーザーがApp/Models/User:all();を使用しているのを確認できますが、次のようにするとうまくいきません。

enter image description here

どうやらbindは機能しません。私はそれにあまり慣れていませんが、機能していないコードの一部を次に示します。

_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);
}
_
3
Coexito

laravel 6、現在Adldap2は完全にサポートされていないlaravel 6を使用していると思われます。たとえば、バージョン5.7はAdlap2。

そうでない場合は、configディレクトリに移動し、次にauth.phpを開いてprovidersにスクロールします。 =そして、アクティブなドライバがeloquentまたはdatabaseであり、LDAPではないことを確認します

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

「ユーザー名とパスワードを入力すると、何も起こらず、ページが更新される」というのはリダイレクトループのように聞こえます。

すべてのリダイレクトが正しいことを確認します

  • LoginControllerをチェックしてください

次のプロパティがあるかもしれません

_protected $redirectTo = '/';
_

正しいURLにリダイレクトされることを確認してください

  • your _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();
_

これでエラーが発生するかどうかを確認しますOR $ user contains NULL OR $ user contains期待される結果.


アップデート2

Laravelアプリケーションでの認証は、LDAPサーバーではなくMySQL DBを介して行われますか?

App/Models/User:all();を実行すると、MySQL DBを介して接続しますが、「編集:」で「LDAPサーバーに接続できません」というエラーが表示されます。

Laravel管理者アカウントを認証することは可能ですどちらか MySQLを介してor LDAP(他の多くの方法の中で)あなたのLaravelインストールは現在、MySQLではなくLDAPサーバーを介して認証を試みていますが、LDAPサーバーが存在しないようです。

(Laravelではなく)コマンドラインからLDAPサーバーに接続してみて、LDAPサーバーがあるかどうかをテストします。 クライアントからのLDAP接続をテストする方法 次に、そのサーバーに管理ユーザーが追加されているかどうかを確認します。

それ以外の場合、Laravel管理者アカウントの認証はMySQL DBを介して行われます(管理者アカウントとそのパスワードはそこに保存されます)場合、_adldap2/adldap2-laravel_を削除する必要があります。 LaravelからのパッケージおよびLDAP認証を使用しないようにLaravelを構成します。

重要!物事をさらに悪化させないために、必ずgitまたは他のバージョン管理システムを使用してください。

Laravel authがMySQLまたはLDAPを介して行われるかどうかが100%わからない場合は、おそらく_adldap2/adldap2-laravel_パッケージを削除しません。おそらく誰かがそれをLaravelインストール前のインストールと現在のLaravelセットアップはLDAPを介して認証を試みています。そのため、最初にVagrantにログインしてコマンドラインからLDAPサーバーに接続してみてください。 。 クライアントからLDAP接続をテストする方法 OR LDAP(AD)を確認する簡単な方法が実行されている ORこのようにtelnetを使用 コメント

0
Dmytro Dzyubak