Я создаю приложение Grails, которое использует Spring Security Core Plugin .
У меня есть две роли приложений. ROLE_USER и ROLE_ADMIN
Пользователи могут загружать файлы, которые хранятся в каталоге под названием files
- Внешние пользователи не должны видеть никаких файлов
- Пользователи ROLE_ADMIN могут видеть каждый загруженный файл.
- ROLE_USER пользователь должен быть разрешен только в определенных случаях
Запрос URL файла должен выглядеть следующим образом
http://localhost:8080/MyApp/files/patient1-1.png
Для первого случая я установил в conf / Config.groovy следующий перехватчик URL
grails.plugins.springsecurity.interceptUrlMap = [
'/files/**': ['ROLE_USER']
]
Для второго и третьего случая я создал следующий файл conf / MyFilters
class MyFilters {
def springSecurityService
public currentUser() { return User.get(springSecurityService.principal.id);}
public userRoles() { return springSecurityService.principal.authorities*.authority }
def filters = {
fileFilter(uri: '/files/*') {
before = {
println "Here"
def String url = request.getRequestURL()
if(url.contains("files/patient")) {
if(!userRoles().contains(Role.ROLE_ADMIN)) {
if(PLAIN ROLE USER IS NOT ALLOWED) {
redirect(action:'login')
return false;
}
}
}
}
after = {
}
afterView = {
}
}
}
}
Однако, похоже, что это не сработало. Я никогда не вижу распечатки Here .
Есть идеи, что я делаю не так?