Skip to content

Conversation

@Kama-Pushka
Copy link
Owner

@Kama-Pushka Kama-Pushka commented Apr 25, 2025

Студент: Аптуликсанов Руслан Германович
Преподаватель: Никита Иванов

  • Реализовать приложение с разделением прав доступа с использованием аннотации javax.annotation.security.RolesAllowed. АПИ:

    • - public/api - доступ разрешен для всех
    • - admin/api - доступ разрешен для пользователей с ролью admin
    • - support/api - доступ разрешен для пользователей с ролью support
  • Все приватные АПИ должны возвращать имя и роль пользователя

  • Хранение пользователей в памяти приложения (использование InMemoryUserDetailsManager)

  • Для хеширования паролей использовать BCryptPasswordEncoder

  • Basic аутентификация

изображение
изображение
изображение

.requestMatchers(ADMIN_URLS)
.hasAuthority(UserRole.ADMIN.name())
.requestMatchers(SUPPORT_URLS)
.hasAuthority(UserRole.SUPPORT.name()))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По условию ДЗ нужно, чтобы у пользователя была РОЛЬ. Здесь устанавливается авторити, а это не совсем тоже самое. Используй вместо hasAuthority, authority методы hasRole, role и т.п.

Если же хочешь оставить именно такой вызов, то должны быть ROLE_SUPPORT, ROLE_ADMIN

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

настолько ли принципиально добавлять приставку ROLE_ к ролям, если они и так находятся в классе, отвечающем за хранение ролей?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Принципиально, потому что без этой приставки ты имеешь просто авторити, а не роль.

Указывая hasAuthority("ADMIN"), ты говоришь спрингу "Найди авторити пользователя ADMIN"
Указывая hasRole("ADMIN"), ты говоришь спрингу "Найди авторити пользователя ROLE_ADMIN"

Да, в твоем случае все будет работать нормально, но таким образом ты создаешь разночтения, ты смешиваешь понятия роли и авторити, что может привести к ошибкам.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Понял. Исправить нейминги еще можно?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если что исправил

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants