Операции записи недопустимы в режиме только для чтения (FlushMode.MANUAL): с режимом гибернации grails - PullRequest
1 голос
/ 24 марта 2011

Я интегрировал подключаемый модуль Spring Security с моим приложением Grails, в котором Hibernate используется как инструмент ORM ...

С помощью подключаемого модуля Spring Security все приложение работает нормально, включая аутентификацию, авторизацию ...

Но недавно у меня был один случай, когда я столкнулся с некоторыми проблемами:

Вы вошли в систему как: администратор Роль администратора: ROLE_ADMIN Права ROLE_ADMIN: каждый URL-адрес доступен для ROLE_ADMIN

так что как администратор, когда я пытаюсь обновить привилегии, назначенные для ROLE_ADMIN, он выдает исключение:

2011-03-24 10:20:14,035 [http-8080-2] ERROR errors.GrailsExceptionResolver  - Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
        at ConfigController$_closure45_closure59.doCall(ConfigController:1128)
        at ConfigController$_closure45.doCall(ConfigController:1123)
        at ConfigController$_closure45.doCall(ConfigController)
        at java.lang.Thread.run(Thread.java:619)

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

Внутри кода также везде, где я сохраняю / обновляю / удаляю любой объект, используя hibernate, я проверяю flush: false, например:

user.save flush:false

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

Спасибо, яN заранее ..

1 Ответ

1 голос
/ 24 марта 2011

Вызовите springSecurityService.reauthenticate после изменения разрешения роли пользователя. В разделе 'reauthenticate' на связанной странице также есть хорошие фрагменты кода, которые должны ответить на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...