我正在尝试进行基本身份验证,当我尝试对用户进行身份验证时,但Auth :: attempt
方法返回错误的
刀片
{{ Form::open(array('url' => 'usuario')) }}
<input type="text" class="text" id="email" name="email" placeholder="Correo" {{(Input::old('email')) ? 'value ="'. Input::old('email').'"' : '' }}>
<p>{{ $errors->first('email') }}</p>
<input type="text" class="text" id="password" name="password" placeholder="Contraseña" >
<p>{{ $errors->first('password') }}</p>
{{ Form::submit('Ingresar', array('class' => 'bg1')) }}
{{ Form::close() }}
控制器
class UsuarioController extends BaseController{
public function doLogin(){
$rules = array(
'email' => 'required|email',
'password' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()){
return Redirect::to('usuario')->withErrors($validator)->withInput(Input::except('password'));
}else{
$userdata = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
if(Auth::attempt($userdata)){
return View::make('hello');
}else{
return Redirect::to('usuario');
}
}
}
}
验证
'driver' => 'database',
'model' => 'Usuario',
'table' => 'Usuario',
型号
use IlluminateAuthUserInterface;
use IlluminateAuthRemindersRemindableInterface;
class Usuario extends Eloquent implements UserInterface, RemindableInterface{
protected $table = 'Usuario';
protected $primaryKey = 'idUsuario';
protected $hidden = array('Contrasena');
protected $fillable = array(
'Nombre',
'Apellido',
'Tipo',
'password',
'email',
'Fono',
'Foto'
);
}
代码总是返回false,并将我重定向到登录,当数据库
有很多原因可以使它每次都返回false:
1( 您的密码未正确存储/哈希,您必须使用进行哈希
Hash::make($password);
这是一种创建用户并存储密码的方法,由Laravel:正确散列
$user = new User;
$user->email = 'example@domain.com';
$user->password = Hash::make('thePasswordToBeHashed');
$user->save();
2( 您的密码列大小没有足够的空间来存储哈希密码。它必须至少有60个字节长,但迁移时使用:
$table->string('password');
这是一个很好的做法,因为如果这个尺寸在未来发生变化,你就不会有问题。
3( 您尝试登录的电子邮件(Correo(没有用户。仔细检查一下,因为这种情况比我们想象的更频繁。你也可以尝试手动操作,看看它是否真的有效:
$userdata = array(
'Correo' => 'youremail@domain.com',
'Password' => 'password'
);
dd( Auth::attempt($userdata) );
4( 您的表单没有正确传递数据,请检查您的表单是否真的有效,方法是:
dd(Input::all());
并检查您是否获得了正确的数据。
5( 你有一个验证,所以问题可能就在上面。添加另一条死亡消息以确保:
if($validator->fails())
{
dd('Validation is failing!');
...
}
6( 来自评论:
$userData = array('email' => Input::get('email'), 'password' => Input::get('password'));
return (string) Auth::attempt($userData));
7( 尝试手动创建不同的用户:
$user = new User;
$user->email = 'example@domain.com';
$user->password = Hash::make('passwordExample');
$user->save();
并使用它登录:
$userData = array('email' => 'example@domain.com', 'password' => 'passwordExample');
return (string) Auth::attempt($userData));