【问题标题】:Auth::attempt() is not working in Laravel 5.5Auth::attempt() 在 Laravel 5.5 中不起作用
【发布时间】:2018-02-27 00:03:42
【问题描述】:

我的注册表正在工作,它将用户存储到数据库,但是当用户登录时,Auth::attempt() 返回 false。这是我的登录代码。我将密码存储在 db 中的 sha1 加密中。

Route::post('login',function(){
$creds=array(
        'email' => Input::get('email'),
        'password' => sha1(Input::get('password'))
    );
$auth = Auth::attempt($creds);

dd($auth);

【问题讨论】:

  • 另见this
  • 你为什么使用sha1?
  • @SameerShaikh 我在数据库中有真实用户,密码为 sha1。现在我从核心 php 切换到 Laravel。但我被困在这个日志记录中。
  • 新用户注册时,你有没有用sha1保存密码(你修改了相关的逻辑)?如果没有,那么您有使用 sha1 的现有用户和使用默认 laravel 加密的新用户...

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3


【解决方案1】:

我通过将注册用户密码转换为sha1然后像Hash::make(sha1(Input::get('password')));这样的laravel散列加密来解决它

在登录时我喜欢下面

Hash::make(sha1(Input::get('password')))

然后$auth = Auth::attempt($creds); 工作了。

【讨论】:

  • @ljubadr 我已将所有现有的 sha1 密码转换为 bcrypt(laravel 默认加密)。所以密码首先转换为sha1,然后再转换为bcrypt。
  • 我建议将此标记为答案。此外,这个答案可以帮助其他人在未来遇到同样的问题,所以你可以提供更多的解释你在哪里做了改变
【解决方案2】:

试试这个 -

Route::post('login',function(){

$auth = Auth::attempt(['email'=>Input::get('email'),'password'=>Input::get('password')],$remember ? true : false);

dd($auth);
});

希望这对你有用。

【讨论】:

  • 如果你使用记住我检查然后只通过它否则通过它像这样 - Auth::attempt(['email'=>Input::get('email'),'password'= >输入::get('password')]);
【解决方案3】:

即使您可以按照this post 中的描述实现服务提供者,您也可以使用other auth method 手动执行此操作

This means you can do like so:

//....
try{
    $user = User::where('email', Input::get('email'))
      ->where('password', sha1(Input::get('password')))->firstOrFail();
    Auth::login($user);
} catch (ModelNotFoundException $e)
    return ['Username or password Incorrect'];
}

然而,最好的办法是在 Laravel 中使用 bcrypt(),但如果没有选择 bcrypt,上述方法应该可以工作。

【讨论】:

  • 当我提供正确的凭据时,它会起作用。但是当我提供错误的凭据时,它会显示“抱歉,找不到您要查找的页面。”
  • 由于->firstOrFail(),它显示“对不起,页面...”。更改为->first(),但随后您必须检查$user 中的内容
  • 一般不应该显示。但是,出于安全考虑,使用sha1 是不行的。我指定了firstOrFail(),因此无需说使用任何if(),而是捕获异常,否则将用户重定向到适当的位置。
  • 我一直在使用firstOrFail,在这个例子中它是完美的(我只是注意到你捕获了异常,当我研究这个时我太累了)。我太关注他的评论了
  • @OmisakinOluwatobi,我只是在他的问题中添加了 cmets,也许是这样......
猜你喜欢
  • 2013-02-27
  • 2016-05-17
  • 2017-01-06
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
  • 2017-03-31
  • 2017-03-10
相关资源
最近更新 更多