Php 为什么Laravel Auth::check总是返回false?

Php 为什么Laravel Auth::check总是返回false?,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在为现有数据库制作一个API。当我看到Auth::trust总是返回false时,我首先注意到了这个问题。因为我已经实现了自己的SHA1哈希提供程序,所以我认为这可能是问题所在 但我尝试了Hash::make('test'),它给了我'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'。然后我尝试了Hash::make($client->pwd),它给了我同样的Hash。到目前为止是正确的。我终于做到了 if (Hash::check('test', $cli

我正在为现有数据库制作一个API。当我看到Auth::trust总是返回false时,我首先注意到了这个问题。因为我已经实现了自己的SHA1哈希提供程序,所以我认为这可能是问题所在

但我尝试了Hash::make('test'),它给了我'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'。然后我尝试了Hash::make($client->pwd),它给了我同样的Hash。到目前为止是正确的。我终于做到了

if (Hash::check('test', $cli->pwd))
{
    [...]
}

结果是假的。从外观上看,问题不是我的哈希提供程序,我想这也是Auth::attempt失败的原因。有人能告诉我为什么吗?

问题出在我这边。我误解了雄辩的概念。我必须在用户模型映射到的UserInterface类getAuthIdentifier()中进行更改,以返回“id”,它是表的主关键字。我认为getAuthIdentifier()是表的“用户名”。

Auth::trunt()将对密码本身进行散列,因此它可能会对“散列”密码进行重新散列。您是否将自定义散列提供程序集成到了Auth中?因为那个散列看起来不是BCrypt散列。哦,我的错误。我将其更改为if(Hash::check('test',$cli->pwd))。仍然返回false。是的,我认为我的集成是正确的,它是SHA1,因为我的数据库密码不是bcrypt哈希。