登录页面显示登录错误


Login page says login is wrong

我试图在 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用户身份验证检查用户名+密码。

另外:散列是在数据库中保存传递时。您无需在此处创建哈希。尝试函数会为您做到这一点。