我试图在 laravel 中进行登录,但它不会给我成功登录。
这是我登录的代码:
public function login()
{
$user = array(
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password'))
);
if (Auth::attempt($user)) {
return Redirect::to('showlogin');
}
else{
return 'Wrong username/password';
}
}
public function showlogin()
{
return View::make('login');
}
它总是给我消息:"错误的用户名/密码"。我放什么并不重要。当我输入正确的组合时,它会给我消息,当我输入错误的组合时,它也给了我消息。
路线:
Route::get('admin', 'TestController@login');
Route::get('login', 'TestController@showlogin');
和 2 个视图
登录:
@extends('layout')
@section('content')
<h1>Login</h1>
{{ Form::open(array('url' => 'admin', 'method' => 'get')) }}
<div>
{{ Form::label('email', 'E-mail:') }}
{{ Form::text('email') }}
{{ $errors->first('email') }}
</div>
<div>
{{ Form::label('password', 'Password:')}}
{{ Form::password('password')}}
{{ $errors->first('password') }}
</div>
<div>
{{ Form::submit('Login')}}
</div>
{{ Form::close()}}
@stop
管理:
@extends('layout')
@section('content')
<h1>Admin page</h1>
@stop
这里出了什么问题?
将
密码传递给attempt()
时,您无需对密码进行哈希处理。在内部,该方法将使用需要纯密码来比较Hash::check
检查它是否正确。(创建的每个哈希都是新的,因为它由随机盐组成)
不散列它应该可以工作:
$user = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
$user = array(
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password'))
);
在代码的这一部分中,您需要将键"电子邮件"更改为"用户名"。据我所知,Laravel用户身份验证检查用户名+密码。
另外:散列是在数据库中保存传递时。您无需在此处创建哈希。尝试函数会为您做到这一点。