Я работаю над приложением на основе Spring с Spring Security. У меня есть пользователи с разными ролями, и я хотел бы реализовать обработку отказа в доступе в зависимости от роли. В частности, желаемый эффект будет следующим: когда пользователь пытается получить доступ к ресурсу, к которому ему не разрешено, я хотел бы различать случай, когда отказ связан с тем, что пользователь не аутентифицирован, и случай, когда это связано с недостаточные привилегии (неправильная роль). Неаутентифицированных пользователей можно направить на обычную страницу 403, а тех, у кого просто неправильная роль, я бы хотел перенаправить на форму, в которой они могли бы запросить предоставление соответствующей роли.
Я думаю о том, чтобы либо добавить «‹access-denied-handler error-page="/xyz"›» и внедрить контроллер xyz, либо как-то (пока не знаю, как) реализовать это как настраиваемый фильтр.
Как бы вы решили проблему? Есть ли лучшая практика для этого? Пытался найти в Google несколько примеров, так как я считаю это довольно распространенным шаблоном, но безуспешно.
Большое спасибо.