我的JSF表单登录正在使用约束1 但是当我将约束2 添加到我的web.xml时,在表单上执行提交现在将我带到jsf javascript页。有人能告诉我我做错了什么吗?我希望这是一个快速的配置错误。
我希望只有管理员才能访问/ admin / *页面,只有注册用户才能访问包含管理文件的整个站点。 BTW在看到java脚本页面之后我仍然可以导航到浏览器中的目标页面,我只是不希望用户看到中间的js页面或者需要知道目标页面URL。
约束1
<security-constraint>
<display-name>Admin</display-name>
<web-resource-collection>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
约束2
<security-constraint>
<display-name>Users</display-name>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
以下是我被重定向到的不受欢迎的网址:
javax.faces.resource/jsf.js.xhtml?ln=javax.faces&stage=Development
这是jsf.js.xhtml ...的开头,它显示在Firefox
上/**
@project JSF JavaScript Library
@version 2.0
@description This is the standard implementation of the JSF JavaScript Library.
*/
/**
* Register with OpenAjax
*/
if (typeof OpenAjax !== "undefined" &&
typeof OpenAjax.hub.registerLibrary !== "undefined") {
OpenAjax.hub.registerLibrary("jsf", "www.sun.com", "2.0", null);
}
// Detect if this is already loaded, and if loaded, if it's a higher version
if (!((jsf && jsf.specversion && jsf.specversion >= 20000 ) &&
(jsf.implversion && jsf.implversion >= 3))) {
...
在Internet Explorer 8.0.7上,我得到了这个弹出窗口
备注
我正在使用Firefox 10.0.4,IE 8.03,Glassfish 3.1 w JSF2.0 lib,j_security_check,我的登录领域设置类似于this
答案 0 :(得分:0)
尝试添加
<intercept-url pattern="/javax.faces.resource/**" access="hasRole('ROLE_ANONYMOUS')"/>
到你的security.xml。 请参阅以下评论接受的答案JSF with Spring security - Redirect to specified page after login