Laravel Auth :: attempt()将我总是重定向到登录页面

时间:2015-01-23 10:48:18

标签: php authentication laravel

我尝试使用Laravel Auth::attempt()功能,但即使我使用valide用户名和password,它也始终将我重新登录到登录页面。
这是我的路线:

 Route::get('/login', 'PublicController@loginPage');
    Route::post('/login', 'PublicController@loginAction');

    Route::get('/users/members', array('before' => 'auth', function()
    {
        return View::make('users.members');
    })); 

这是我的loginAction功能:

public function loginAction() {
        $rules = array( 'username' => 'required',
                        'password' => 'required'
                        );
        $validator = Validator::make(Input::all(), $rules);

        if ($validator->fails()) {
             $messages = $validator->messages();
            return Redirect::to('login')
                                ->withErrors($validator)
                                ->withInput(Input::except('password')); 
        }
    else {
        $user = array(
            'username' => Input::get('username'),
            'password' => Input::get('password')
        );
        $auth = Auth::attempt($user);

        if ($auth) {
            dd(Auth::check()); // this return always **True**
            return Redirect::to('users/members');
        } else {
            return Redirect::to('login')
                                ->withErrors(['Login Failed please try again']);}
        }

    }

当我使用错误的usernamepassword时,它会向我显示错误消息Login Failed please try again,当我使用valide数据时rederict me to the Login page without showing any error

更新 路线过滤器:

Route::filter('auth', function()
{
    if (Auth::guest())
    {
        if (Request::ajax())
        {
            return Response::make('Unauthorized', 401);
        }
        else
        {
            return Redirect::guest('login');
        }
    }
});

更新2: 这是我的个人资料页面(我希望在登录后重定向):

Route::get('/users/members', function()
{
    dd(Auth::check()); This always return **false**
});

所以问题是,我认为登录后不会保存用户身份验证。

2 个答案:

答案 0 :(得分:1)

深入挖掘后,我发现问题是我在主数据库中使用了不同的名称, user_id 而不是 id ,在我的数据库中。所以我只是添加了这行我的USER模型

class User extends Eloquent {
    protected $primaryKey = 'admin_id';
....}

注意如果您使用其他名称作为主键,而不是 id ,那么请不要忘记添加此适当性

  

protected $ primaryKey ='PrimaryKeyName';

这将解决问题的基调

答案 1 :(得分:0)

您能否将过滤器的相关部分发送给我们

Route::filter('auth', function()
{
    // Your filter here
 }

我相信那里有一些阻止正确重定向的东西。

为了进行测试,您可以从路线中删除过滤器。

Route::get('/users/members', function() ...