我试图在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
这里出了什么问题?
答案 0 :(得分:1)
将密码传递给attempt()
时,无需对密码进行哈希处理。在内部,该方法将使用需要普通密码的Hash::check
来比较检查它是否正确。 (创建的每个哈希都是新的,因为它由随机盐组成)
如果没有散列,它应该可以工作:
$user = array(
'email' => Input::get('email'),
'password' => Input::get('password')
);
答案 1 :(得分:0)
$user = array(
'email' => Input::get('email'),
'password' => Hash::make(Input::get('password'))
);
在此部分代码中,您需要将密钥“email”更改为“username”。据我所知,Laravel用户身份验证检查用户名+密码。
另外:哈希是在数据库中保存传递时。您不需要在这里创建哈希。尝试功能为你做到了。