使用 JSF 在 Java EE 中开发 Web 应用程序。所有页面都通过带有操作“j_security_check”并输入“j_username”和“j_password”的身份验证表单进行保护,以免被查看。
但是,成功登录后,我被重定向到我想访问的页面而不是这个 URL
/faces/javax.faces.resource/jsf.js?ln=javax.faces&stage=Development
所以我正在查看包含所有 JS 代码的脚本文件 jsf.js,而不是我想要查看的页面。如果我访问 Web 根目录或任何其他页面都没有关系,我每次都会被重定向到这个 URL。然后我将 URL 更改为任何页面,它可以正常加载并且我已登录。
我不得不说我已经遇到了这个问题,它神奇地消失了,所以它正确地重定向了我。几周后它又坏了,但我不知道这是我的错,如果是我不知道原因。我根本没有搞乱重定向或导航规则。
值得一提的是,我也在使用 PrettyFaces。
编辑:
<security-constraint>
<display-name>secured</display-name>
<web-resource-collection>
<web-resource-name>all</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
<role-name>teacher</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>secured for admins</display-name>
<web-resource-collection>
<web-resource-name>admin pages</web-resource-name>
<description/>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description/>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>unsecured</display-name>
<web-resource-collection>
<web-resource-name>css</web-resource-name>
<description/>
<url-pattern>/css/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>js</web-resource-name>
<description/>
<url-pattern>/js/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>img</web-resource-name>
<description/>
<url-pattern>/img/*</url-pattern>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>wetk-security</realm-name>
<form-login-config>
<form-login-page>/faces/login.xhtml</form-login-page>
<form-error-page>/faces/login.xhtml</form-error-page>
</form-login-config>
</login-config>