Php 获得;ErrorException“;在实现Laravel 4类Auth::login()时

Php 获得;ErrorException“;在实现Laravel 4类Auth::login()时,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在构建一个web应用程序,用户可以在其中注册并发布问题。一切都很顺利,直到我尝试开发一个功能,用户在注册后将自动登录。我使用了Auth::login()类,就像我使用Laravel 3一样,但是我得到了以下错误: "ErrorException Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, instance of M

我正在构建一个web应用程序,用户可以在其中注册并发布问题。一切都很顺利,直到我尝试开发一个功能,用户在注册后将自动登录。我使用了Auth::login()类,就像我使用Laravel 3一样,但是我得到了以下错误:

"ErrorException Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of       Illuminate\Auth\UserInterface, instance of Member given"
而我用注册用户的信誉实现了这个类。我想Laravel 4已经改变了该类在以前版本中的工作方式,但在发布此问题之前,我无法在他们的文档中找到它,也无法在StackExchange中进行搜索

这是我的UserController中的代码

public function postCreate() {

    $validator = Member::validate(Input::all());

    if ($validator->passes()) {
        $user = Member::create(array(
            'username' => Input::get('username'),
            'password' => Hash::make(Input::get('password'))
        ));

        Auth::login($user);

        return Redirect::route('home')->with('message', 'Thanks for registering!');
    } else {
        return Redirect::route('register')->withErrors($validator)->withInput();
    }
}
我对Laravel 4提供的默认User.php模型有点困惑。我通常会根据数据库中的users表创建一个用户模型,而我会使用Laravel3。但这一次在Laravel4中,我不得不将我的用户表名更改为members,以便可以使用我自己的model Member.php。如果我删除默认用户模型中的代码,或者我应该将自己的函数放在顶部,保留Laravel提供的现有代码,这样可以吗


另外,我对MVC概念比较陌生,开始学习Laravel 3的教程,这就是为什么我发现自己很难适应Laravel 4的原因

如例外情况所述,您的成员模型需要实现
UserInterface
,以便使用
Auth
帮助程序:

class Member extends Eloquent implements UserInterface
这里引用:

我们的用户模型实现了UserInterface和RemembrableInterface。这些是干什么用的? 好的,用户界面让我们知道,这个模型包含了它运行所需的所有方法 通过Laravel自己的认证系统进行认证。提醒界面允许使用Laravel 检索用户的电子邮件地址或其他联系信息,以便 发送密码提醒电子邮件


您必须实现
UserInterface
来修复错误。此外,如果需要密码提醒功能,还必须实现
提醒界面

成员
类中添加以下行:

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class Member extends Eloquent implements UserInterface, RemindableInterface {

好吧,我想我开始有点明白了。我刚刚将$protectedtable方法更新到我的表中,该表是members。现在可以了。但我想了解如何以及在何处实现这些方法,如protected$hidden=array('password');附言:虽然它现在起作用了,但我面临着另一个奇怪的问题。用户注销后,在浏览器中单击“上一步”,不应访问管理页面。但注销后,我仍然会返回到管理员页面,只需单击浏览器中的后退箭头按钮。我该怎么处理呢?你需要使用身份验证过滤器<代码>路由::过滤器()。更多信息: