2013-03-12 112 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