4

私にはさまざまなユーザーがいます。そのうちの何人かは普通のユーザーで、何人かは管理者です。私が必要としているのは、管理者がユーザー リストのボタンをクリックするだけで他のユーザーとしてログインできることです。

私がこれまでに持っているものは次のとおりです。

index.blade.php (ユーザーリスト):

<a href='{{URL::route('users.loginas', array('id' => $user->id))}}'>LoginAs</a>

ルート.php:

Route::group(array('before'=>'auth'), function()
{
    Route::get('/', array('as'=>'index', 'uses'=>'HomeController@showWelcome'));

    Route::resource('users', 'UsersController');
    Route::any('users/loginas/{id}', array('as'=>'users.loginas', 'uses' => 'UsersController@loginAs'));

});

ユーザーコントローラー.php:

class UsersController extends BaseController {

...

public function loginAs($id)
    {
        Auth::logout();
        Auth::loginUsingId($id);

        return Redirect::route('provalogin');
    }

}

ID 1 のユーザーでログインしているときに、ユーザー リストから ID 2 のユーザーのリンクをクリックすると、mysite.com/users/loginas/2 に正しくリダイレ​​クトされますが、ErrorException がスローされます。

Illuminate\Auth\Guard::login() に渡される引数 1 は、インターフェイス Illuminate\Auth\UserInterface を実装する必要があります。null を指定すると、/var/www/mysite.com/web/vendor/laravel/framework/src/Illuminate/Auth で呼び出されます。 /Guard.php 368 行目および定義済み

次に、URL を mysite.com/users に変更すると、実際に新しいユーザーとしてログインしていることがわかるので、うまくいきAuth::loginUsingId(2)ました。

私は何を間違っていますか?またはどうすればいいですか?

4

4 に答える 4

0

UserInterface を継承して、ユーザー モデルが正しく設定されていないようです。

User モデルは次のようになります。

class User extends Eloquent implements UserInterface

auth.php 設定は次のようになります。

return array(

    /*
    |--------------------------------------------------------------------------
    | Default Authentication Driver
    |--------------------------------------------------------------------------
    |
    | This option controls the authentication driver that will be utilized.
    | This drivers manages the retrieval and authentication of the users
    | attempting to get access to protected areas of your application.
    |
    | Supported: "database", "eloquent"
    |
    */

    'driver' => 'eloquent',

    /*
    |--------------------------------------------------------------------------
    | Authentication Model
    |--------------------------------------------------------------------------
    |
    | When using the "Eloquent" authentication driver, we need to know which
    | Eloquent model should be used to retrieve your users. Of course, it
    | is often just the "User" model but you may use whatever you like.
    |
    */

    'model' => 'User',

    /*
    |--------------------------------------------------------------------------
    | Authentication Table
    |--------------------------------------------------------------------------
    |
    | When using the "Database" authentication driver, we need to know which
    | table should be used to retrieve your users. We have chosen a basic
    | default value but you may easily change it to any table you like.
    |
    */

    'table' => '',

    /*
    |--------------------------------------------------------------------------
    | Password Reminder Settings
    |--------------------------------------------------------------------------
    |
    | Here you may set the settings for password reminders, including a view
    | that should be used as your password reminder e-mail. You will also
    | be able to set the name of the table that holds the reset tokens.
    |
    */

    'reminder' => array(
        'email' => 'emails.forgot-pass', 'table' => 'forgot_pass'
    ),

)
于 2013-07-09T18:24:22.300 に答える
0

ユーザーが空であることがわかり、正しいユーザーをロードすることで解決しました。それがあなたにとってもうまくいくかどうかはわかりませんが、試すことができます。

于 2014-09-17T05:20:24.730 に答える
0

私にとってはそれでうまくいきました\Session::flush();。セッションでいくつかの変数がまだ記憶されているように見えました。

于 2014-04-10T14:01:40.270 に答える