Laravel 5.1 mehrfache Authentifizierung
Wie können Sie mehrere Benutzertypen in Laravel 5.1 authentifizieren, z. Arbeitssuchende, Personalvermittler, Admin usw.
Einige von Ihnen haben vorgeschlagen, nur das Kennwort und die E-Mail in einer einzelnen Benutzertabelle zu speichern, Profiltabellen zum Speichern benutzerspezifischer Informationen (jobseeker_profile, recruiter_profile) zu erstellen und mithilfe von Rollen zwischen den verschiedenen Benutzertypen zu unterscheiden (z. B. Rollen und role_user) ) Tabelle
Das ist alles sehr gut, aber was ist, wenn die verschiedenen Arten von Benutzern unterschiedliche Registrierungs- und Anmeldeformulare haben? Wie kann der Standardauthentifizierungscontroller sofort angepasst werden, um die richtige Ansicht anzuzeigen?
Also, wenn ich die folgenden Routen habe:
// Jobseeker Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');
// Jobseeker Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');
// Recruiter Authentication routes...
Route::get('recruiter/auth/login', 'Auth\AuthController@getLogin');
Route::post('recruiter/auth/login', 'Auth\AuthController@postLogin');
Route::get('recruiter/auth/logout', 'Auth\AuthController@getLogout');
// Recruiter Registration routes...
Route::get('recruiter/auth/register', 'Auth\AuthController@getRegister');
Route::post('recruiter/auth/register', 'Auth\AuthController@postRegister');
Dies ist der standardmäßige Auth-Controller:
class AuthController extends Controller
{
use AuthenticatesAndRegistersUsers;
public function __construct()
{
$this->middleware('guest', ['except' => 'getLogout']);
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|confirmed|min:6',
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
Traits, die standardmäßig als Standardauthentifizierungs-Controller verwendet werden:
trait AuthenticatesUsers
{
use RedirectsUsers;
public function getLogin()
{
return view('auth.login');
}
public function postLogin(Request $request)
{
$this->validate($request, [
'email' => 'required|email', 'password' => 'required',
]);
$credentials = $this->getCredentials($request);
if (Auth::attempt($credentials, $request->has('remember'))) {
return redirect()->intended($this->redirectPath());
}
return redirect($this->loginPath())
->withInput($request->only('email', 'remember'))
->withErrors([
'email' => $this->getFailedLoginMessage(),
]);
}
public function loginPath()
{
return property_exists($this, 'loginPath') ? $this->loginPath : '/auth/login';
}
}
trait RegistersUsers
{
use RedirectsUsers;
public function getRegister()
{
return view('auth.register');
}
public function postRegister(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
Auth::login($this->create($request->all()));
return redirect($this->redirectPath());
}
}
Ich bin sicher, dass dies eine sehr häufige Anforderung für viele Webanwendungen ist, aber ich kann keine hilfreichen Tutorials für Laravel-spezifische Implementierungen finden. Das gesamte Tutorial konzentriert sich einfach aus irgendeinem Grund auf die Out-of-the-Box-Implementierung.
Jede Hilfe zu den oben genannten wäre sehr dankbar.