Ручной Multi Auth в Laravel - PullRequest
       5

Ручной Multi Auth в Laravel

0 голосов
/ 02 сентября 2018

У меня простой вопрос. Я хочу использовать multi auth (для пользователя + admin) в моем приложении laravel с использованием guard, поэтому я могу в контроллере просто проверить, является ли аутентифицированный пользователь admin или нет, например:

public function addCategories(Request $request) {

    if (!Auth::guard('admin')->check()) {
        abort(404);
    } 
   ....

}

Но приведенный выше код всегда возвращает false, не знаю почему, и это мой логин администратора:

public function doLogin(Request $request) {

    try {
        $validator = \Validator::make($request->post(), [
            'username' => array(
                    'required',
                    'string',
                    'max:12',
                    'regex:/(^[A-Za-z0-9_]+$)+/'
                ),
            'password' => 'required|max:12'
        ]);

        if ($validator->fails()) {
            //$validator->errors()
            throw new Exception('post data are incorrect');
        }

        $admin = Admin::where('AUsername', '=', $request->post('username'))
            ->first();

        if ($admin == null) {
            throw new Exception('username or password are incorrect');
        } else if (!\Hash::check($request->post('password'), $admin->toArray()['APassword'])) {
            throw new Exception('username or password are incorrect');
        }

        Auth::guard('admin')->login($admin);

        if (!Auth::guard('admin')->check()) {
            throw new Exception('could not login, please try again later');
        }

        return response()->json([
            'success' => 'login success'
        ]);

    } catch(Exception $e) {
        return response()->json(
            ['error' => $e->getMessage()]
        );
    }

}

Кстати, я не пользовался (Auth :: try ()), потому что он всегда терпел неудачу (возвращал false))

И, наконец, это мой auth.php:

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],

    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
],

1 Ответ

0 голосов
/ 02 сентября 2018

вы должны расширить админку с Authenticatable вместо красноречивой модели и вызовите auth: admin middleware для ваших маршрутов, которым нужно разрешение администратора также эта ссылка может помочь вам multi-auth в laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...