是否可以使用基于表单的身份验证进行基于URL的身份验证?

时间:2017-02-14 12:51:43

标签: java tomcat

登录页面

<web-app>
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>User Auth</web-resource-name>
			<url-pattern>/auth/*</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>admin</role-name>
			<role-name>manager</role-name>
		</auth-constraint>
	</security-constraint>
	<login-config>
		<auth-method>FORM</auth-method>
		<form-login-config>
			<form-login-page>login.jsp</form-login-page>
			<form-error-page>error.jsp</form-error-page>
		</form-login-config>
	</login-config>
</web-app>

来自web.xml的

内容

sortTable

基于表单的身份验证工作正常。但是,如果我直接从http://localhost:8080/index.jsp/j_security_check?j_username=admin&j_password=admin访问index.jsp是行不通的。

为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

由于您希望从POST请求进行登录,因此您不能(如果我错了请更正)直接从浏览器URL发送。

解决方案是执行另一个页面,loginRedirect.jsp将自动发送POST请求。

这将使用URL中传递的参数填充<form>并自动发送click事件。 Javascript中的所有内容。

这可以在login页面之外完成。如果URL中有一些参数,请自动发送表单。

使用此answer作为源,您可以轻松读取参数(并检查是否存在)并设置<input>的值。然后点击submit按钮。