0

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

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

这是 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>

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

4

1 回答 1

0

我有这个问题的答案,它在部署描述符文件 web.xml 中......

在安全约束中,“form-login-page”标签中的页面 url 是登录页面 url ,而不是“成功登录后的页面”,因此当您调用 page1.jsf 并且您在登录之前尚未登录时。 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>

我希望这个解决方案能很好地帮助你....

于 2013-03-05T06:45:27.813 回答