Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4中的多种用户类型-登录问题_Php_Mysql_Login_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel 4中的多种用户类型-登录问题

Php Laravel 4中的多种用户类型-登录问题,php,mysql,login,laravel,laravel-4,Php,Mysql,Login,Laravel,Laravel 4,我正在为学校做一个项目,我需要一个以上的用户类型:用户,注册和教师 我遵循了Laravel文档,让用户能够完美地工作(登录/注册) 然后我尝试添加另一个用户:注册者。我得到了注册工作,它甚至添加到“注册”表中的用户 但是当我尝试登录时,它使用的是“users”表,而不是“register”表,并给我一个控制器方法“notfound”错误 模型:register.php <?php use Illuminate\Auth\UserInterface; use Illuminate\Auth

我正在为学校做一个项目,我需要一个以上的用户类型:用户,注册和教师

我遵循了Laravel文档,让用户能够完美地工作(登录/注册)

然后我尝试添加另一个用户:注册者。我得到了注册工作,它甚至添加到“注册”表中的用户

但是当我尝试登录时,它使用的是“users”表,而不是“register”表,并给我一个控制器方法“notfound”错误

模型:register.php

<?php

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

class Registrar extends Eloquent implements UserInterface, RemindableInterface {
    protected $table = 'registrar';
    protected $hidden = array('password');
    public function getAuthIdentifier() {
        return $this->getKey();
    }
    public function getAuthPassword() {
        return $this->password;
    }
}
注册控制器,登录方式:

public function postSignin() {
    if (Auth::attempt(array('email'=>Input::get('login_input')) {
        return Redirect::to('registrar/member')->with('status', 'You are now logged in!');
    } else {
        return Redirect::to('registrar/login')
            ->with('error', 'Your username/password combination was incorrect')
            ->withInput();
    }
}
内部的其他功能:

class RegistrarController extends BaseController {
    public function __construct() {
        $this->beforeFilter('csrf', array('on'=>'post'));
        $this->beforeFilter('auth', array('only'=>array('getRegistrar')));
    }
    public function getRegister() {
        return View::make('registrar.register');
    }
    public function getRegistrar() {
        return View::make('registrar.member');
    }
login.blade.php

{{ Form::open(array('url'=>'registrar/signin', 'class'=>'form-signin' , 'id'=>'login-form')) }}
.
.
.
.
-- form close--
我想知道这一行是否不是signin函数中的问题:

if (Auth::attempt(array('email'=>Input::get('login_input')) {
        return Redirect::to('registrar/member')->with('status', 'You are now logged in!')

由于我不确定系统如何检查要使用的数据库表,或其在“用户”上的默认值。

您可以在运行时执行此操作以交换模型:

$provider = new \Illuminate\Auth\EloquentUserProvider(app('hash'), 'Registrar');

Auth::setProvider($provider);

我认为最好在这里使用角色,而不是为成员使用seprate数据库。例如,github上的Trust是一个支持成员角色的包。这样,您只有一个用户数据表,可以有多个角色。其中一个角色可以是注册员、教师或其他角色。这实际上是一个小项目,我们需要使用基本的mysql操作等。。。如1个用户表,1个注册器表等…postSignin方法存在问题(其中一个函数被硬编码为使用“用户”表),或者控制器未正确链接到该表。请查看下面Antonio的答案。但是,当用户登录时,您必须根据用户的类型动态修改该设置。类似于
Config::set('auth.model',$userType)嗨,如果我替换了用户,那么第一个用户类型将不起作用。有什么方法可以同时添加这两个吗?-谢谢-登录正常,但我仍然没有找到控制器方法:。错误消息没有很好地定义,有没有办法知道是哪一个文件/行导致了错误?错误图片:。它甚至没有说是哪种方法导致了错误。试着颠倒你的路线顺序,这是一个路线问题。您的“/registrator/member”可能正在Route::controller()中解析,但不应该解析。以下是我的所有路由:Route::get(“/”,array('uses'=>)HomeController@AuthenticateUser'));  路由::get('/student/member',数组('使用'=>'UsersController@getStudent'));  路由::get('logout',array('uses'=>'UsersController@doLogout'));     路由::控制器(“用户”、“用户控制器”);路由::控制器(“密码”、“提醒控制器”);路线::控制器(“学生”、“学生控制器”);路由::控制器(“注册器”、“注册控制器”);路由::get('/registrator/member',array('使用'=>'RegistrarController@getRegistrar'));
$provider = new \Illuminate\Auth\EloquentUserProvider(app('hash'), 'Registrar');

Auth::setProvider($provider);