java和jboss 7 j_security_check登录成功但有问题

时间:2013-03-04 06:49:37

标签: java security jsf jboss7.x jaas

我创建了自定义数据库服务器登录模块,我创建了一个带有j_security_check的表单,它成功运行,但问题是:

  1. 有时jboss返回错误代码408:登录成功后,它不会重定向到网页中* form-login-page 标记中定义的页面.xml。 *( 408:请求超时:客户端在服务器准备等待的时间内没有产生请求。客户端可以在以后的任何时候重复请求而不做任何修改。
  2. 有时候jboss返回错误代码400(错误请求:由于语法错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求。)。
  3. 被定义为授权角色x的页面。我运行它,我可以成功查看它而无需登录。
  4. 不幸的是,我没有针对上述问题的特定情况。
  5. 这是web.xml中的security-cosntraint标记

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>InstitutionRole</web-resource-name>
            <url-pattern>/jsfs/services/ManageData.jsf</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>Institution_delegate</role-name>
        </auth-constraint>
    </security-constraint>
    
    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/index.jsf</form-login-page>
            <form-error-page>/jsfs/errors/loginError.jsf</form-error-page>
        </form-login-config>
    
    </login-config>
    <security-role>
        <description>Institution Delegate Role</description>
        <role-name>Institution_delegate</role-name>
    </security-role>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    

    请求帮助....任何想法????

1 个答案:

答案 0 :(得分:0)

我在部署描述文件web.xml中找到了这个问题的答案......

  

在安全约束中,“form-login-page”标签中的页面网址是登录页面网址而不是“成功登录后的页面”所以当你正在调用page1.jsf并且您在login.jsf自动启动之前尚未登录。

所以

如果你对Page:/ page1.jsf有一个约束:x

 <security-constraint>
<web-resource-collection>
    <web-resource-name>x</web-resource-name>
    <url-pattern>/page1.jsf</url-pattern>
</web-resource-collection>
<auth-constraint>
    <role-name>x</role-name>
</auth-constraint>

<security-role>
    <description>x Role</description>
    <role-name>x</role-name>
</security-role>

你必须把

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
    <form-login-page>/login.jsf</form-login-page>
    <form-error-page>/jsfs/errors/loginError.jsf</form-error-page>
</form-login-config>

我希望这个解决方案可以帮助你......