2013-03-12 91 views
0

这里是我的问题:验证::尝试不起作用[Laravel]

我有一个表用户是:

ID的用户名邮箱密码

此外,模型的用户,并当谈到注册时,一切都很好。

现在,当我想在这里登录我的观点

@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中注册。

问题是:即使我的电子邮件/密码正确,我无法获得身份验证,并且我收到我的消息错误的ID。我希望我是清楚的...

事情你应该知道:

我没有在配置改变Auth.php,所以用户名是电子邮件

我散列密码,当我与注册:'密码” =>哈希::使(输入::得到( '密码'))

编辑和解决方案

好吧,我想通了!

首先:

  • 我采用php 5.3.6和Hash 5.3.7需要至少
  • 在那之后,我意识到,在我的分贝,密码是40个字符最多。我觉得自己很蠢

希望它将帮助别人/线程

+0

你可以请你提供你的路线吗? – bretterer 2013-03-12 02:48:38

+0

我的路线非常简单:Route :: controller(Controller :: detect()); – 2013-03-12 02:50:14

回答

0

其一,控制器::检测()是一个有缺陷的方法 - 在许多地方不走快捷方式,使用该方法提倡。指定您需要的每条路线 - 不仅更具可读性,还更容易理解请求发生了什么。

如果您没有更改auth config,那应该表示从表单提供的用户名应该是某人的EMAIL,因为这是Auth将要检查的。所以确保这是事实。如果你想匹配用户名,一定要设置。

此外,更多信息是必需的 - 你还没有真正开始什么不工作,只是它不工作。究竟是什么,不起作用?请确保你遵循我上面的要点,但它仍然无法正常工作,我们需要更多信息/代码。 Atm,你的错误报告是相当有缺陷的。

+0

好吧,我知道路由,但这显然不是问题在这里(我还在学习Laravel) 我已经明确指出:“我没有更改配置中的Auth.php,所以用户名是电子邮件”,所以我知道我必须使用电子邮件作为用户名,这就是我所做的。 现在,我的错误如下: 当我点击登录,我的表单传递给我的控制器。即使用户名(email)和密码正确,我仍然会收到我写的错误,以防用户输入错误的用户名/密码。 所以,我试图直接将用户名和密码传递给Auth :: attempt。 也不管用.. 希望我很清楚:) – 2013-03-12 11:55:32

+0

不幸的是,你的报告不像你想象的那么清晰,因此需要更多的信息。很高兴你知道,但:) – Oddman 2013-03-12 22:41:12