2016-03-16 2 views
1

Я хочу иметь неограниченный доступ для/gadgets/{any directory}/css/*. я попытался упомянуть как этот ** не работает в web.xml security-contraints

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>UnProtected Area</web-resource-name> 
    <url-pattern>/gadgets/**/css/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Protected Area</web-resource-name> 
    <url-pattern>/gadgets/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>LOGIN</role-name> 
    </auth-constraint> 
</security-constraint> 

Но это не работает.

ответ

0

Узор вы пытаетесь использовать не поддерживается спецификацией сервлета (загружаемое here):

В дескрипторе развертывания веб-приложений, следующий синтаксис используется для определения отображения:

  • Строка, начинающаяся символом '/' и , заканчивающаяся суффиксом '/ *', используется для отображения пути.
  • Строка , начинающаяся с префикса '*.', Используется как расширение.
  • пустой строка («») является специальным шаблоном URL, который точно отображает контекстный корень приложения, то есть, запросы вид http://host:port/ /. В этом случае информация о пути - '/' и , путь сервлетов и путь контекста - пустая строка ("").
  • Строка , содержащая только символ '/', обозначает сервлет по умолчанию приложения. В этом случае путь сервлета является запросом URI минус путь контекста, а информация о пути равна NULL.
  • Все остальные строки используются для точных совпадений только

Соответственно, если вам нужно, чтобы соответствовать все файлы CSS, ваш должен быть в состоянии определить его как отображение расширения:

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>Unprotected Area</web-resource-name> 
    <url-pattern>*.css</url-pattern> 
    </web-resource-collection> 
</security-constraint> 
+0

Спасибо, но * .css также не работает –

0

У меня такая же проблема. Мои файлы * .css и * .js находятся в WebRoot/resources/css и в WebRoot/resources/script. Чтобы получить доступ к этим файлам, я добавил строку <mvc:resources mapping="/resources/**" location="/resources/" /> в мой "*-servlet.xml".
Теперь разрешен доступ для всех пользовательских ролей, добавив следующий код к web.xml в качестве последней безопасности-ограничений:
<security-constraint> <web-resource-collection> <web-resource-name>CSS and JS Files</web-resource-name> <url-pattern>/resources/*</url-pattern> </web-resource-collection> </security-constraint>
Я надеюсь, что это помогает.