【发布时间】:2015-08-21 08:31:12
【问题描述】:
如何在 Laravel 5 中设置多个身份验证。开箱即用您只能设置 1 个身份验证。如果我有一个客户表和一个管理员表并希望为每个表设置身份验证 - 每种经过身份验证的用户类型都应该被限制查看或访问管理页面,反之亦然?
* 更新 *
我创建了一个 users 表,其中包含求职者和招聘人员共有的信息,即姓名、密码等。
我已经创建了一个角色和角色用户表
我创建了两个单独的表来保存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.',
]);
}
}
【问题讨论】: