添加用户角色约束会将浏览器重定向到jsf.js脚本吗?

时间:2012-06-20 21:05:53

标签: jsf web.xml jaas j-security-check

我的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上,我得到了这个弹出窗口

js_popup

备注

我正在使用Firefox 10.0.4,IE 8.03,Glassfish 3.1 w JSF2.0 lib,j_security_check,我的登录领域设置类似于this

1 个答案:

答案 0 :(得分:0)

尝试添加

<intercept-url pattern="/javax.faces.resource/**" access="hasRole('ROLE_ANONYMOUS')"/>

到你的security.xml。 请参阅以下评论接受的答案JSF with Spring security - Redirect to specified page after login