1

誰かが登録してからログインできるようにする基本的なlaravel 4アプリがあります。ユーザーが登録を正常に完了すると、自動的にログインするようにしようとしています。「Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, instance of User given」というエラー例外が発生します。これは、ログインメソッドに渡される最初の引数が正しくないことを意味することを理解していますが、laravel ドキュメント

$user = User::find(1);

Auth::login($user);

これが私のコントローラーです

<?php

    Class UsersController extends BaseController {

        public $restful = 'true';
        protected $layout = 'layouts.default';

        public function post_create()
        {
            $validation = User::validate(Input::all());

            if ($validation->passes()) {
                User::create(array(
                    'username'=>Input::get('username'),
                    'password'=>Hash::make(Input::get('password'))
                    ));

                $user = User::where('username', '=', Input::get('username'))->first();

                Auth::login($user);

                return Redirect::Route('home')->with('message', 'Thanks for registering!  You are now logged in!');
            }

            else {
                return Redirect::Route('register')->withErrors($validation)->withInput();
            }
        }

    }
?>
4

2 に答える 2

5

私が考えることができるいくつかのシナリオがあります:

  1. UserLaravelの新規インストールに付属するモデルを使用していません(可能性は低いですがUserInterface、それは実装されていますが、編集したり、新しいモデルを作成した場合は、そうでない可能性があります)。
  2. User::create()正常に呼び出されていません (ユーザーが正常に作成されていません)
  3. $user = User::where()->...結果が出ていない

試す:

$user = User::create(array(
            'username'=>Input::get('username'),
            'password'=>Hash::make(Input::get('password'))
        ));

Auth::login($user);

それでもエラーが発生する場合は、ユーザーが正常に作成されていないため$user、オブジェクトではない可能性があります。User

于 2013-09-11T23:54:27.047 に答える