Программирование, веб-кодинг

Авторизация в Yii2

Авторизация в Yii2

Уже рассказано, как практично использовать авторизацию на основе RBAC с расширением yii2-user. Теперь в более широком смысле посмотрим на тему авторизации в Yii2.

Лучше всего описана тема в официальной документации - Авторизация. Там красиво с картиночками, изучите.

Далее скажу из опыта, что использовать RBAC удобно, когда планируется именно иерархия ролей пользователей с наследованием. То есть, когда более высокие роли включают в себя доступы, которыми наделены более низкие роли по иерархии. "Так как привилегии не назначаются пользователям непосредственно, и приобретаются ими только через свою роль (или роли), управление индивидуальными правами пользователя по сути сводится к назначению ему ролей".

Если необходимо ограничить доступ у пользователя с более низкими правами к просмотру 'view' (который общий для всех прав), доступного пользователю с более высокими правами, то сделал проверку в контроллере в действии 'view' так:

$model = $this->findModel($id);
$level = 0;
if(Yii::$app->user->can('student free')) $level = 1;
if(Yii::$app->user->can('student2')) $level = 2; 
if(Yii::$app->user->can('student3')) $level = 3;
if(($level >= $model->course_id) || Yii::$app->user->can('admin')) {
    ...
} else {
    throw new HttpException(403,'У вас недостаточно прав для доступа к этой странице.');
}

Такое понадобилось из-за того, что сам вид 'view' - общий для всех ролей.