我正在做一个简单的登录,我面临着小问题,只是无法弄清楚是什么问题。
这是我的auth.php:
<?php
return array(
/*
|--------------------------------------------------------------------------
| Default Authentication Driver
|--------------------------------------------------------------------------
|
| This option controls the authentication driver that will be utilized.
| This driver manages the retrieval and authentication of the users
| attempting to get access to protected areas of your application.
|
| Supported: "database", "eloquent"
|
*/
'driver' => 'eloquent',
/*
|--------------------------------------------------------------------------
| Authentication Model
|--------------------------------------------------------------------------
|
| When using the "Eloquent" authentication driver, we need to know which
| Eloquent model should be used to retrieve your users. Of course, it
| is often just the "User" model but you may use whatever you like.
|
*/
'model' => 'Login',
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'tbl_user',
/*
|--------------------------------------------------------------------------
| Password Reminder Settings
|--------------------------------------------------------------------------
|
| Here you may set the settings for password reminders, including a view
| that should be used as your password reminder e-mail. You will also
| be able to set the name of the table that holds the reset tokens.
|
| The "expire" time is the number of minutes that the reminder should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'reminder' => array(
'email' => 'emails.auth.reminder',
'table' => 'password_reminders',
'expire' => 60,
),
);
如上所示,我使用自己的模型Login
和我自己的表格tbl_user
以下是我的模型(Login.php)
<?php
class Login extends Eloquent {
protected $table = "tbl_user";
public static function checkUser($array)
{
$data = DB::table('tbl_user')->where('user_email', $array['user_email'])->where('user_password', $array['user_password'])->get();
return $data;
}
}
现在我认为模型有问题,我只是不知道它是什么。我正在从CodeIgniter转到Laravel 4,这个auth thingy对我来说是新的。
这是路线:
Route::post('login', function(){
$userdata = array(
'user_email' => Input::get('email'),
'user_password' => Hash::make(input::get('password'))
);
if(Auth::attempt($userdata)){
echo "Login Success!";
}else{
echo "Login Failed!";
}
});
我登录失败了!密码被哈希! Hurmm!有什么建议吗?
答案 0 :(得分:1)
Auth使用实现Userinterface的用户模型,如果要创建自己的自定义User模型,则应该实现UserInterface,您可以在应用程序中检查deault提供的用户模型:
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('password');
/**
* Get the unique identifier for the user.
*
* @return mixed
*/
public function getAuthIdentifier()
{
return $this->getKey();
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->password;
}
/**
* Get the e-mail address where password reminders are sent.
*
* @return string
*/
public function getReminderEmail()
{
return $this->email;
}
}
答案 1 :(得分:0)
提到Petkostas
时,您必须实施UserInterface
,RemindableInterface
。
此外,还要修复此行:
$userdata = array(
'user_email' => Input::get('email'),
'user_password' => Hash::make(input::get('password')) // no need to hash password
);
无需在Auth::attempt()
之前哈希密码,因为Laravel将为您执行此操作。
我已从代码中删除了Hash::make()
:
$userdata = array(
'user_email' => Input::get('email'),
'user_password' => input::get('password')
);
if(Auth::attempt($userdata)){
echo "Login Success!";
}else{
echo "Login Failed!";
}