2012-03-14 74 views
1

我刚刚开始使用Spring Security 3.1,但还没有找到一种方法将它放在JSF 2.1 Web应用程序之上。我目前有:JSF 2.1 web应用程序的Spring Security

一个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> 

我猜这个例子会窝与常规的.jsp rk,但我可能会错过其他步骤,使其与JSF,不幸的是,我一直没能找到一个完整的工作示例到目前为止。我需要做什么?谢谢!

编辑:问题是,我仍然可以自由地导航到应用程序的安全区域,而无需登录

编辑:BTW,我只注意到一个过滤器,Web应用程序的根呢确实触发了认证机制。尽管如此,它仍然失败了。

+0

激活spring安全包的调试级别。它会为您提供更多信息。 – jddsantaella 2012-03-14 22:18:20

回答

3

当局应先从

ROLE_

这里Spring Security FAQSO

+0

我刚刚切换到“ROLE_”前缀,但仍然失败。 – 2012-03-14 19:50:34

+0

编辑:顺便说一句,我只是注意到,Web应用程序的根的过滤器的确会触发验证机制。尽管如此,它仍然失败了。 2012-03-14 19:53:18

+0

@dustedrob你可以发布URL传递的url和Spring安全性检测到的url,只需检查你的映射是否正确 – 2012-03-14 20:40:36

0

配置似乎是正确的。也许你在http定义中缺少auto-config =“true”选项。查看更多在这里

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

您的问题究竟是什么?你不能用指定的用户名/密码登录?授权不适用于您的应用程序?

+0

问题是,我仍然可以自由导航到应用程序的安全区域,而无需任何身份验证。使用auto-config的 – 2012-03-14 16:52:41

+0

没有什么区别。 – 2012-03-14 17:00:49

+0

还有一种猜测,你已经定义了use-expressions =“true”,因此Spring安全性期望表达式而不是角色名称(请查看http://static.springsource.org/spring-security/site/docs/3.0.x /reference/el-access.html#el-access-web)。也许你可以使用表达式hasRole('recursoshumanos')或者移除use-expressions并且看看会发生什么 – dimcookies 2012-03-14 17:09:32

1

看看正如gbagga指出,答案是很简单:添加的 “面孔” 的一部分模式的路径。谢谢!

相关问题