Auth ::尝试不起作用[Laravel]

时间:2013-03-12 02:38:30

标签: authentication laravel

这是我的问题:

我有一个表用户:

id username email password

此外,模型用户,当涉及到注册时,一切都很好。

现在,当我想要登录时,我的视图

@layout('main')

@section('content')


@if(Session::has('login_errors'))

<div class='alert alert-error'>Wrong ID</div>

@endif

{{Form::open('user/login', 'POST', array('class' => 'well inline-form'))}}

{{Form::token()}}


{{Form::text('username', Input::old('username'), array('class' => 'input-large', 'placeholder' => 'email'))}}
{{Form::password('password', array('class' => 'input-large', 'placeholder' => 'Mot de passe'))}}

{{Form::submit('Login', array('class'=>'btn btn-primary'))}}

{{Form::close()}}

@endsection

以下是我在控制器

中的操作
public function action_login()
{
    if(Auth::check()){return Redirect::to('user');}

    if(Request::method() == 'POST')
    {

        $credentials = array('username' => Input::get('username'), 'password' => Input::get('password'));

        if(Auth::attempt($credentials))
        {
            return Redirect::to('user');
        }

        else
        {

            return Redirect::to('user/login')->with_input()->with('login_errors', true);

        }
    }


    Section::inject('title', 'Login');

    return View::make('user.login');

} 

它应该有效,但事实并非如此。

错误如下:当我点击登录按钮时,我的表单传递给我的控制器并被读取。我知道我的Input :: get('username'),Input :: get('password')是正确的,并在db中注册。

问题是:即使我的电子邮件/密码是正确的,我也无法获得Auth,而且我的消息 ID错误。我希望我很清楚...

你应该知道的事情:

我没有在配置中更改Auth.php,因此用户名是电子邮件

我在注册时使用密码哈希:'password'=&gt;散列::化妆(输入::获得( '密码'))

编辑和解决方案

好的,我明白了!

首先:

  • 我使用的是Php 5.3.6,Hash至少需要5.3.7
  • 之后,我意识到在我的数据库中,密码最多为40个字符。我觉得很蠢。

希望它能帮助某人/线程

1 个答案:

答案 0 :(得分:0)

首先,Controller :: detect()是一种有缺陷的方法 - 并且在许多地方都提倡不采取捷径并使用该方法。指定您需要的每条路线 - 不仅更具可读性,而且更容易理解请求的内容。

如果您还没有更改auth配置,那么这应该意味着表单提供的用户名应该是某人的EMAIL,因为这是Auth将要检查的内容。所以请确保是这种情况。如果您想与用户名匹配,请务必另外设置。

此外,还需要更多信息 - 您还没有真正开始不起作用的东西,只是它不起作用。到底是什么,不起作用?请确保您遵循上述要点并且仍然无效,我们需要更多信息/代码。 Atm,您的错误报告存在缺陷。