Spring Security 3.0 - Intercept-URL - для всех страниц требуется проверка подлинности, кроме одной - PullRequest
5 голосов
/ 03 мая 2010

Я хочу, чтобы любой пользователь мог отправлять свое имя на добровольную форму, но только администраторы могли просматривать любой другой URL. К сожалению, я не могу понять это правильно. Мои ресурсы.xml выглядят следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">
    <http realm = "BumBumTrain Personnel list requires you to login" auto-config="true" use-expressions="true">
        <http-basic/>
        <intercept-url pattern="/person/volunteer*" access=""/>
        <intercept-url pattern="/**" access="isAuthenticated()" />
    </http>

    <authentication-manager alias="authenticationManager">
        <authentication-provider>
            <user-service>
                <user name="admin" password="admin" authorities="ROLE_ADMIN"/>
            </user-service>
        </authentication-provider>
    </authentication-manager>
</beans:beans>

В частности, я пытаюсь выполнить настройки доступа, которые я описал через;

    <intercept-url pattern="/person/volunteer*" access=""/>
    <intercept-url pattern="/**" access="isAuthenticated()" />

Может ли кто-нибудь описать, как использовать перехват-URL для достижения результата, который я описал?

Спасибо

Гав


По какой-либо причине в приложении Grails, в котором я нуждался;

        <intercept-url pattern="/person/volunteer/**" access="" filters="none"/>
    <intercept-url pattern="/images/**" access="" filters="none"/>
    <intercept-url pattern="/css/**" access="" filters="none"/>
    <intercept-url pattern="/js/**" access="" filters="none"/>
    <intercept-url pattern="/**" access="ROLE_ADMIN" />

Чтобы заставить это работать, обратите внимание на разницу в первом правиле.

Ответы [ 2 ]

8 голосов
/ 04 мая 2010

Что именно не работает, как вы ожидаете? что идет не так?

Я думаю, что access = "" не то, что вы ожидаете ... Используйте формат из документов:

<intercept-url pattern="/login.jsp*" filters="none"/>

Если вы не используете аутентификацию по умолчанию (что вы делаете), вам необходимо добавить WebExpressionVoter, потому что вы используете выражения выражения doc

1 голос
/ 13 августа 2012

Привет замените access="" на access="permitAll" для URL, который вы хотите сделать доступным без аутентификации.

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