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