Я был там и обнаружил, что это довольно легко реализовать в основном в пользовательском коде, если вы работаете в обычном веб-приложении старой школы.Я думаю, что весной есть что-то, что позволяет вам сделать это, но в зависимости от вашего приложения это может быть намного проще сделать самостоятельно, и даже не так сложно.
Один из способов - создать фильтр grails.это охватывает все маршруты, которые затронуты этим.Например, все, кроме страницы входа и второй страницы после этого.Этот фильтр проверит временную роль и, если найден, перенаправит на вторую страницу авторизации.В противном случае он пропускает запрос.Может быть что-то вроде этого:
twoFactorCheck(controller: '*', controllerExclude: 'privacyPolicy|login|logout|2factor', action: '*') {
before = {
if (process2factorAuthNeed()) {
return true;
}
redirect(controller: "2factor", action: "index");
return false;
}
}
Тогда еще одна вещь, которая вам нужна, это реализация пользовательского UserDetailsService, где вы можете захватить первую обычную аутентификацию и установить временную роль для пользователя.Это описано здесь: https://grails -plugins.github.io / grails-spring-security-core / 2.0.x / guide / userDetailsService.html если вы находитесь на Grails 2. * но ваша весенняя безопасностьВ плагин версии руководства пользователя также будет эта запись.