Возможно ли применить защиту на уровне метода для контроллеров Spring @MVC? - PullRequest
0 голосов
/ 11 ноября 2011

Я применил приведенный ниже код, но он не работал, может кто-нибудь, пожалуйста, дайте мне какое-то решение для этого. Спасибо.

Метод контроллера:

@Controller
public class UserController {
@Secured("ROLE_USER")
@RequestMapping(value="user/{userName}", method=RequestMethod.GET)
    public @ResponseBody User getAvailability(@PathVariable String userName, HttpServletResponse response) { }
}

applicationContext-security.xml связанные конфигурации:

    <global-method-security secured-annotations="enabled" />

    <http>
        <intercept-url pattern="/user" requires-channel="https"/>
        <http-basic/>
    </http>

    <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <user-service>
                <user password="password" name="manager" authorities="ROLE_MANAGER"/>
                <user password="password" name="user" authorities="ROLE_USER"/>
            </user-service>
        </authentication-provider>
    </authentication-manager>

Ответы [ 2 ]

0 голосов
/ 13 ноября 2011

Если вы хотите использовать управление доступом на основе URL, вам нужно добавить / **

<intercept-url pattern="/user/**" requires-channel="https"/>

Если вам нужна безопасность на уровне метода, вам нужно

<context:component-scan base-package="com.yourcompany.etc"/>

<security:global-method-security secured-annotations="enabled"/>

также в вашем файле web.xml вам нужно добавить конфигурацию Spring Security в качестве параметра для вашего сервлета

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/applicationContext-security.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
0 голосов
/ 11 ноября 2011

Вы хотите применить защиту, используя тег <intercept_url>.

Например:

    <intercept-url pattern="/user" requires-channel="https" access="ROLE_USER"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...