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.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage