@Vadim-55

Yii2 доступ в backend только для админа?

немного передала actionLogin() в backend (Yii2 advanced шаблон)
суть: организовать доступ только для админов
пояснение: после того как юзер залогинился проверяем его статус и уровень доступа для админки. если все гуд, пропускаем, если нет, то делам logout
вопрос: этого достаточно для безопасности? или есть другие варианты?

сам экшен
public function actionLogin()
    {
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new LoginForm();
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            $user_id = Yii::$app->user->identity->getId();
            if (User::findIdentityAdmin($user_id)) {
                return $this->goBack();
            } else {
                Yii::$app->user->logout();
                throw new ForbiddenHttpException('Доступ запрещен.');
            }
        } else {
            return $this->render('index', [
                'model' => $model,
            ]);
        }
    }


модель user
const STATUS_ACTIVE = 10;
const ROLE_ADMIN = 10;

    public static function findIdentityAdmin($id)
    {
        return static::findOne(['id' => $id, 'role' => self::ROLE_ADMIN, 'status' => self::STATUS_ACTIVE]);
    }
  • Вопрос задан
  • 909 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
вопрос: этого достаточно для безопасности? или есть другие варианты?

Недостаточно, например если сработает аутентификация по куке - Ваша логика попросту не отработает. Лучше воспользуйтесь для ограничения доступов соответствующими фильтрами
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы