Итак, в настоящее время я переношу классы действий Struts 1 в Spring mvc, а также добавлю безопасность Spring.В более старой реализации, когда происходит аутентификация пользователя, мы помещаем HashMap<String, AuthObj>
в объект сеанса, где ключом для этого HashMap
является роль / привилегия, а значением AuthObj
является объект, который содержит несколько реквизитов, связанных с этим конкретным«Роль» и тот конкретный пользователь, который был аутентифицирован.
Затем существует org.apache.struts.tiles.TilesRequestProcessor
, который выполняется непосредственно перед тем, как вызывается какое-либо действие Struts, что мы делаем в этом TilesRequestProcessor
, когда мы получаем доступ к классу действияconfig org.apache.struts.config.ActionConfig
для чтения роли / привилегии, требуемой для вызова этого конкретного класса действия, а затем помещать некоторые свойства в объект запроса / сеанса на основе «роли», требуемой для вызова этого класса действия, и ключ этого свойства одинаков для всехкласс действия, чтобы при последующем доступе к этому свойству в классе действия нам не приходилось использовать другой ключ.
Мой вопрос заключался в том, как этого можно добиться с помощью Spring mvc и Spring Security, важно, чтобы мыпоместите этот объект в объект сеанса / запроса, ключ должен быть таким жеили каждый класс действия, в противном случае мне придется изменить сотни методов в более старом коде, который я перенесу из Struts в Spring.
В моей новой реализации я использую аннотацию @Secured("ROLE")
на контроллерах Spring MVC, чтоЯ хочу сделать, это получить доступ к значению аннотации @Secured("ROLE")
на вызываемом контроллере на основе URL-адреса запроса, используя фильтр, а затем установить параметр для объекта запроса request.setParameter(key, value)
на основе предоставленного значения аннотации, которое в данном случае равно «ROLE»case.
Я хотел бы узнать, как получить доступ к этому значению аннотации и какой фильтр безопасности Spring я должен расширить, чтобы добавить параметр для объекта запроса request.setParameter(key, value)
, и этот параметр запроса должен быть доступен и в контроллере