切换到 mongoDB auth::attempt 后不再起作用

Posted

技术标签:

【中文标题】切换到 mongoDB auth::attempt 后不再起作用【英文标题】:After switch to mongoDB auth::attempt does not work anymore 【发布时间】:2015-04-26 10:02:48 【问题描述】:

我最近使用 jenssegers/laravel-mongodb 包将我的 Laravel 4 项目切换到了 mongoDB 系统。

种子和迁移都很好,但是 Auth::attempt 函数现在总是返回 false。这在以前效果很好。

这是属性在种子中的样子:

'password' => Hash::make ( 'password' ),

这是 Auth::attempt 比较数据的方式:

        $userdata = array(
                'email'     =>Input::get('email'),
                'password'  => Input::get('password'),
        );
        $loginResult = Auth::attempt($userdata, $post_remember);

我插入

use Jenssegers\Mongodb\Model as Eloquent;

在所有模型、种子、迁移和控制器中。

但 auth.attempt 总是返回 false。

【问题讨论】:

您确定输入是否正确传递。只是为了检查,硬编码这些值,看看它是否有效。 【参考方案1】:

由于您使用的是 Laravel 4,因此您可以通过在用户模型中实现“UserInterface”来解决此问题。

use Illuminate\Auth\UserInterface;
use Jenssegers\Mongodb\Model as Eloquent;

然后:

class User extends Eloquent implements UserInterface



对于 Laravel 5:

use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Jenssegers\Mongodb\Model as Eloquent;

class User extends Eloquent implements AuthenticatableContract


    use Authenticatable;

【讨论】:

以上是关于切换到 mongoDB auth::attempt 后不再起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Auth::attempt 会话过期

Laravel Auth::attempt() 可以处理关系吗?

Laravel 4 - Auth::attempt() 不工作

Auth::attempt 值始终为 false

在 Auth::attempt() Laravel 5.1 中禁用重定向

Laravel 4 Auth::attempt($userdata, false) 身份验证仍然保留