我创建了自定义数据库服务器登录模块,我创建了一个带有j_security_check的表单,它成功运行,但问题是:
这是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>
请求帮助....任何想法????
答案 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>
我希望这个解决方案可以帮助你......