2012-03-14 5 views
1

Я только начинаю с Spring Security 3.1, и я не нашел способ внедрить его поверх веб-приложения JSF 2.1. Я в настоящее время:Spring Security на веб-приложении JSF 2.1

web.xml с:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:applicationContext-business.xml 
        /WEB-INF/applicationContext-security.xml 
     </param-value> 

<filter> 
<filter-name>springSecurityFilterChain</filter-name> 
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
<filter-name>springSecurityFilterChain</filter-name> 
<url-pattern>/*</url-pattern> 
</filter-mapping> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

И мой ApplicationContext-security.xml:

<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.1.xsd"> 



<http pattern="/resources/**" security="none" /> 

<http use-expressions="true"> 
<intercept-url pattern="/administracion/departamentos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/derechos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/diasfestivos/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/dias/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/solicitudes/**" access="recursoshumanos" /> 
<intercept-url pattern="/administracion/empleados/**" access="recursoshumanos" /> 

</http> 


<authentication-manager> 
    <authentication-provider> 
     <user-service> 
      <user name="rod" password="koala" authorities="recursoshumanos" /> 
      <user name="dianne" password="emu" authorities="jefe" /> 
      <user name="scott" password="wombat" authorities="jefe" /> 
     </user-service> 
    </authentication-provider> 
</authentication-manager> 

Я угадывая этот пример, wo rk с регулярным .jsp, но я, вероятно, не вижу дополнительных шагов, чтобы заставить его работать с JSF, к сожалению, пока я не смог найти полностью рабочий пример. Что мне нужно сделать? Благодаря!

Edit:. Проблема заключается в том, что я все еще может свободно перемещаться в обеспеченных областях применения без необходимости войти в

Edit: Кстати, я только что заметил, что фильтр в корень веб-приложение делает действительно инициирует механизм аутентификации. Тем не менее, он все еще не работает.

+0

Активируйте уровень отладки для весеннего пакета безопасности. Он предоставит вам больше информации. – jddsantaella

ответ

3

Власть должна начать с

ROLE_

Посмотрите здесь Spring Security FAQ и SO

+0

Я просто переключился на префикс «ROLE_», но он все еще не работает. –

+0

Редактирование: BTW, я только заметил, что фильтр в корневом веб-приложении действительно запускает механизм аутентификации. Тем не менее, он все еще не работает.

+0

@dustedrob вы можете отправлять URL-адреса, которые передаются, и URL-адрес, который пойман весной безопасности, просто проверьте, правильны ли ваши сопоставления –

0

Конфигурация кажется правильной. Возможно, в вашем определении http отсутствует параметр auto-config = "true". Подробнее здесь

http://static.springsource.org/spring-security/site/docs/2.0.x/reference/ns-config.html#ns-auto-config

Что ваша проблема именно? Вы не можете войти с указанным именем пользователя/паролем? Авторизация не применяется к вашему приложению?

+0

Проблема в том, что я могу свободно перемещаться по защищенным областям приложения без необходимости какой-либо проверки подлинности. –

+0

с использованием auto-config не повлиял. –

+0

Еще одно предположение, что вы определили use-expressions = "true", поэтому весенняя безопасность ожидает выражение, а не имя роли (проверьте http://static.springsource.org/spring-security/site/docs/3.0.x /reference/el-access.html#el-access-web). Возможно, вы можете использовать выражение hasRole ('recursoshumanos') или удалить выражения использования и посмотреть, что произойдет – dimcookies

1

Как отметил gbagga, ответ был довольно прост: Добавьте "лицо" часть путь к шаблонам. Благодаря!

Смежные вопросы