Php 使用加密密码的Laravel身份验证

Php 使用加密密码的Laravel身份验证,php,laravel,authentication,Php,Laravel,Authentication,我正在尝试使用Laravel登录,但遇到了一些问题 这是我保存用户的方式: $user = User::create(array('email'=> $_REQUEST['email'], 'password' => encrypt($password), 'firstname'=> $_REQUEST['firstname'], 'lastname'=>$_REQUEST['lastname'], 'unecrypted'=> $password)); 现在您可

我正在尝试使用
Laravel
登录,但遇到了一些问题

这是我保存用户的方式:

$user = User::create(array('email'=> $_REQUEST['email'], 'password' => encrypt($password), 'firstname'=> $_REQUEST['firstname'], 'lastname'=>$_REQUEST['lastname'], 'unecrypted'=> $password));
现在您可以看到,我使用
encrypt($password)
在我的数据库中创建了以下记录:

'39', 'myMail@mail.dk', 'eyJpdiI6Iis5RTRQdjBCV1piSVEwN0ZwRDQxa1E9PSIsInZhbHVlIjoiTnY1UnJ0YkVqZkY0VlhzdWhBK1QzUWxIdTc0SXNBRHlPcHQrcXpicmZHND0iLCJtYWMiOiJhODM2ZDI4ZTE5ZjY5YjlkNmQyOGIyYTdiOTU3NzFkNmNmZWNlOGVhMDNjYjY0ZTFiZjZiOGJlNWM3N2U4MmViIn0=', '2018-01-01 13:45:51', '2018-01-01 13:45:51', NULL, 'Marc', 'Rasmussen'
这看起来是正确的

然后我有以下
LoginController

    namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

class LoginController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles authenticating users for the application and
    | redirecting them to your home screen. The controller uses a trait
    | to conveniently provide its functionality to your applications.
    |
    */

    use AuthenticatesUsers;

    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }
}
但是,当我尝试使用我的密码(我知道密码是正确的)登录时,我会收到以下消息:

These credentials do not match our records.
有人能看到我做错了什么吗?

使用帮助程序加密密码:

'password' => bcrypt($password),

如果您想使用自己的密码加密方法,请不要使用laravel的内置身份验证功能,因为只有当密码通过bcrypt方法加密时,才使用laravel身份验证匹配密码, 比如
bcrypt($password)

如果您想使用自己的加密方法,则需要覆盖身份验证登录功能并创建自己的登录逻辑。 我希望你明白我想说的是什么。
谢谢。

你不应该对密码使用“加密”,你应该做一个密码散列。我对Laravel不太熟悉,但使用散列外观不是更好吗@JimL Laravel默认使用
bcrypt()
加密密码
bcrypt()
只是Hash::make()
的一个shourcut。是的,但是当他们改变主意并更新使用新的Hash算法时,我假设Hash facade将提供与标准密码库相同的可移植性。@JimL他们还可以删除facade或将
make
方法重命名为其他方法。因此,我一点也不担心。)诚然,这意味着他们给laravel开发人员的API和接口出现了严重的问题,但我们大家是否都^^^很抱歉把讨论拖到了后面,只是一个我所使用的工具中的抽象/接口的粉丝,因为我希望它们能够生存下来——至少有一段时间:)