如何在Laravel 5中设置多个身份验证。开箱即用,只能设置一个身份验证。如果我有一个customers表和一个管理表,并且希望为每个用户设置身份验证--应该限制每一种经过身份验证的用户查看或访问管理页面,而vis则相反?
* UPDATE *
我创建了一个users表,它保存了求职者和招聘人员共同的信息,如姓名、密码等。
我创建了一个角色和role_user表
我创建了两个单独的表来保存jobseeker_profile和recruiter_profile
如何使用下列路线验证具有求职者类型角色的用户?
Route::get('jobseeker/login', 'Auth\AuthController@getLogin');
Route::post('jobseeker/login', 'Auth\AuthController@postLogin');
Route::get('recruiter/login', 'Auth\AuthController@getLogin');
Route::post('recruiter/login', 'Auth\AuthController@postLogin');以及如何在经过身份验证后保护路由--在以下方面,中间件将如何知道用户的类型:
Route::get('jobseeker/profile', ['middleware' => 'auth', 'uses' => 'JobseekerProfileController@show']);
Route::get('jobseeker/profile/update', ['middleware' => 'auth', 'uses' => 'JobseekerProfileController@updateProfile']);
class JobseekerProfileController extends Controller {
public function updateProfile()
{
if (Auth::user())
{
// Auth::user() returns an instance of the authenticated user...
}
}
}Laravel 5身份验证控制器使用以下特征-would,您可以使用您的答案编辑该特性,还是在下面创建一个新的身份验证控制器?
trait AuthenticatesAndRegistersUsers {
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $request->only('email', 'password');
if ($this->auth->attempt($credentials, $request->has('remember')))
{
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => 'These credentials do not match our records.',
]);
}
}发布于 2015-06-06 13:45:51
您可以在db中创建一个角色表,相应地将角色分配给每个用户,然后在登录时检查用户的角色,然后您可以相应地重定向/显示页面。不需要为每种类型的用户创建单独的表。
编辑的答案
if(Auth::attempt(['email' => $request->email, 'password' => $request->password]))
{
//using role with an expectation that you have one relation method named role defined in User model
//and roles table stores user type as name
if(Auth::user()->role->name == 'admin')
{
return redirect()->to('/administrator/dashboard');
}
elseif(Auth::user()->role->name == 'jobseeker')
{
return redirect()->to('jobseeker/dashboard');
}
}发布于 2015-11-06 10:53:23
https://stackoverflow.com/questions/30682640
复制相似问题