如何在Laravel 5中设置多个身份验证。开箱即用,您只能设置1个身份验证。如果我有一个customers表和一个admin表并且希望为每个表设置身份验证怎么办?每个经过身份验证的用户类型应该被限制查看或访问管理页面,反之亦然?
*更新*
我创建了一个用户表,其中包含求职者和招聘人员共同的信息,即姓名,密码等。
我已经创建了一个角色和role_user表
我创建了两个单独的表来保存jobseeker_profile和recruiter_profile
如何使用以下路由验证具有jobseeker类型角色的用户?
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身份验证控制器使用以下特征 - 您是否可以使用您的答案编辑特征,或者使用下面的答案创建新的身份验证控制器?
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.',
]);
}
}
答案 0 :(得分:1)
您可以相应地为每个用户创建数据库分配角色中的角色表,然后在登录时检查用户具有哪个角色,然后您可以相应地重定向/显示页面。无需为每种类型的用户创建单独的表。
编辑回答
{{1}}
答案 1 :(得分:0)