2012-11-05 39 views
2

您好我是新来laravel,我想我的登录表单的代码功能这里是代码:

我这是怎么创建新的用户(作品井)

public function action_newuser() 
{ 

    $email = Input::get('email'); 
    $password = Input::get('password'); 
    $new_user = Input::get('new_user', 'off'); 
    $first_name= Input::get('firstname'); 
    $last_name= Input::get('last_name'); 
    $username= Input::get('username'); 

    $user = new User(); 
    $user->email = $email; 
    $user->password = Hash::make($password); 
    $user->first_name =$first_name; 
    $user->last_name= $last_name; 
    $user->username= $username; 
    try{ 

     $user->save(); 
    } 
    catch(Exception $e) { 
     echo "Failed to create new user!"; 
    } 

这是我的登录功能:

public function action_login() 
{ 

    $password = Input::get('password');  
    $username= Input::get('username'); 
    $remember= Input::get('remember', 'off'); 
    if($remember =='off') $remember=FALSE; 
    if($remember =='on') $remember=TRUE; 
    $credentials = array(
      'username' => $username, 
      'password' => $password, 
      'remember' => $remember 
     ); 
    if(Auth::attempt($credentials)) 
     { 
      return Redirect::to('dashboard/index'); 
     } 
     else 
     { 
      #I put this line to check are the values passed from my form are correct. 
      echo $password.' ' .$username.' '. $remember; 

     } 


} 

当我提交的登录表单,总是显示空白页面有$的密码,用户名$值$和记值。这意味着Auth :: attempt()运行不正常。

可能是什么问题?

+0

是'$记“真的是凭证吗? –

+0

@WaleedKhan没有问题。 Auth :: attempt将数组作为参数('username','password','remember') – Hasan

+0

@HananAyan不是真的,内建的记忆是尝试的第二个参数(数组$ remember,boolean $ remember)。第一个数组中的其他参数是您尝试匹配的用户列,如在where子句中。 http://laravel.com/docs/security#authenticating-users – brazorf

回答

3

傻瓜我! 尽管我已经多次检查过,但在auth配置文件中看不到'username' => 'email',行。

它应该是'username' => 'username',因为我要使用用户名登录。

+2

良好的观察。这种错误往往不被人注意。在我身上发生过很多次。 – Aniket

3

检查以确保您的数据库密码字段为60个字符。

+0

其已有60个字符。我使用Hash :: check()检查了密码和hashed_pa​​ssword,它返回true。没有问题。 – Hasan

+2

+1,这是我的错。 – ULazdins

0

对于所有正在面临Auth :: attempt()登录失败且具有有效信用的laravel 4开发人员!

解决方案:

  • 在应用程序/配置/ app.php变化类型: '密码'=> MCRYPT_RIJNDAEL_128为 '密码'=> MCRYPT_RIJNDAEL_256并重新散列所有密码
  • 在模型添加方法:

    public function setPasswordAttribute($pass) { 
    
        $this->attributes['password'] = Hash::make($pass); 
    } 
    
  • 在UserController中:

    //创建用户或注册

    public function postCreate() { 
    
        $input = Input::all(); 
        $user = new User; 
        $user->username = Input::get('username'); 
        $user->email = Input::get('email'); 
        $user->password = Hash::make(Input::get('password'));  
        $user = User::create($input); 
        return Redirect::action("Frontend\[email protected]"); 
    

    }

    //登录或者注册在

    public function postSignin() { 
    
        $userdata = array(
         'username' => Input::get('username'), 
         'password' => Input::get('password') 
        ); 
    
        if (Auth::attempt($userdata, true)) { 
         Session::put('username', Auth::user()->username); 
         return Redirect::action("Frontend\[email protected]"); 
        } else { 
         return Redirect::action("Frontend\[email protected]") 
           ->with('message', 'Your username/password combination was incorrect') 
           ->withInput(); 
    } 
    

希望我帮助别人那里