2015-06-06 4 views
0

Как настроить множественную аутентификацию в Laravel 5. Из коробки вы можете настроить только 1 аутентификацию. Что делать, если у меня есть таблица клиентов и таблица администратора и вы хотите настроить аутентификацию для каждого - каждый пользователь, прошедший проверку подлинности, должен быть ограничен просмотром или доступом к страницам администратора и наоборот?Многократная аутентификация Laravel 5

* UPDATE *

Я создал таблицу пользователей, которая содержит информацию, общую для обоих ищущего и рекрутером т.е. имя, пароль и т.д.

Я создал роли и role_user таблицы

Я создал две отдельные таблицы для хранения jobseeker_profile и recruiter_profile

Как вы можете проверить подлинность пользователя с ролью типа Кандидату с помощью followin g маршрутов?

Route::get('jobseeker/login', 'Auth\[email protected]'); 
Route::post('jobseeker/login', 'Auth\[email protected]'); 
Route::get('recruiter/login', 'Auth\[email protected]'); 
Route::post('recruiter/login', 'Auth\[email protected]'); 

И как вы безопасные маршруты, как только проверка подлинности - в следующем, как промежуточный будут знать тип пользователя:

Route::get('jobseeker/profile', ['middleware' => 'auth', 'uses' => '[email protected]']); 
Route::get('jobseeker/profile/update', ['middleware' => 'auth', 'uses' => '[email protected]le']); 

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.', 
       ]); 
} 
} 

ответ

1

Вы можете создать таблицу ролей в дб роли назначить каждый пользователь, соответственно, и затем во время проверки авторизации, какая роль пользователя есть, а затем вы можете перенаправить/показать страницы соответственно. Нет необходимости создавать отдельные таблицы для каждого типа пользователей.

Edited ответ

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'); 
    } 
} 
+0

разные типы пользователей имеют разные атрибуты, и в этом случае это плохой дизайн базы данных, чтобы поместить всех пользователей пользователей в одну таблицу. Чтобы дать вам пример, у меня мог бы быть ищущий работу и рекрутер. Оба являются пользователями, но каждый из них имеет разные атрибуты. Некоторые атрибуты будут обязательными для рекрутера, но не для лица, ищущего работу, и наоборот, например, у вербовщика будет внешний ключ к таблице компаний. У ищущего работу не было бы таких отношений и т. Д. – adam78

+0

Кроме того, четкое различие между вышеперечисленными пользователями, например, соискателем и рекрутером, чрезвычайно затрудняет определение отношений в рамках красноречивой модели. Если у меня есть одна пользовательская красноречивая модель как для ищущего работу, так и для рекрутера, как бы вы определили отношения, в которых у рекрутера много заданий, но у ищущего работу нет? – adam78

+0

То, что я имел в виду, это использование отдельной таблицы для аутентификации и наличие другой таблицы профилей для соискателей и компаний. –

0

Вы можете достичь многократной аутентификации с помощью этого пакета

https://packagist.org/packages/sarav/laravel-multiauth

Для получения более подробного объяснения проверить мои ранее вернуть ответ здесь

How to use authentication for multiple tables in Laravel 5

+0

Ответы на ссылки очень разочарованы здесь, потому что ссылки могут стать мертвыми в будущем. Я предлагаю вам отредактировать свой ответ с помощью цитат из источников, которые вы цитируете. –

+0

Я уже пробовал писать, но модификаторы попросили меня связать ранее написанную ссылку, а не дублировать ответ здесь еще раз. Будучи новым пользователем, у меня недостаточно очков, чтобы прокомментировать или отметить этот вопрос как дубликат. –

+0

Это нормально. Но это было только предположение, чтобы в будущем другие не отметили его как ответ Link-only. –

Смежные вопросы