перехватить элемент управления, отображаемый в Spring MVC - PullRequest
2 голосов
/ 22 августа 2011

В настоящее время я реализую уровень безопасности для приложения Spring MVC, используя Spring Security.Однако меня интересует изменение поведения определенных элементов управления в зависимости от роли пользователя, вошедшего в систему. Под поведением я подразумеваю read / hide / RW. Но то, что я хочу, - это позволить перехватчику делать эту работу за меня.В идеале, перехватывая определенный элемент управления X (может быть созданным пользователем пользовательским элементом управления) и изменяя его состояние (состояние является пользовательским свойством).

Короче говоря, я знаю, что Spring Security обрабатывает ресурсы и методы, но чтоЯ хотел бы сделать, это перехватить и изменить поведение пользовательского элемента управления, прежде чем он рендерится.это возможно?

Большое спасибо,

Ответы [ 2 ]

1 голос
/ 22 августа 2011

Вы можете использовать ваш UserDetailsService вне контекста безопасности, так как это просто DAO. Вы можете просто вставить его в свой весенний контекст, как и любой другой боб.

Метод UserDetailsService#loadUserByUsername(String username) должен возвращать роли для ваших пользователей, при условии, что он настроен правильно, вы можете использовать их, чтобы определить, как визуализировать ваши элементы управления.

Здесь - хорошее руководство по правильной реализации UserDetailsService.

Вы можете использовать его в своем контексте безопасности, чтобы ваши фильтры знали о ролях:

<authentication-manager>
    <authentication-provider user-service-ref="myDetailsService" />
</authentication-manager>

Вы также можете использовать его как обычный боб:

<bean id="myDetailsService"
    class="com.company.service.impl.MyDetailsService" />
<bean id="myOtherService"
    class="com.company.service.impl.OtherService" >
    <property name="detailsService" ref="myDetailsService"/>
</bean>
0 голосов
/ 22 августа 2011

Вы можете сохранить объект User в сеансе, и ваш перехватчик проверит его роли. Я не знаю о простой готовой аннотации для этого, хотя с Spring вы никогда не знаете - она ​​может существовать.

...