在 Struts 1 的查询中禁用正文参数
Disable Body Parameters in Query for Struts 1
应用程序中登录页面的常规使用使用 DynaValidatorForm
,单击 'submit' 时会发出 POST 请求,其中包含用户的用户名和密码。然后在相关操作 class.
中对其进行验证和处理
服务器代码:
protected ActionForward performAction(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
DynaValidatorForm dynaForm = (DynaValidatorForm) form;
//validation here
//...
//
Login login = new Login();
PropertyUtils.copyProperties(login, dynaForm);
//login object is used from here on out
但是,可以通过在 URL 中使用参数发出 GET 请求来登录,即 www.my-site.com/LoginPage.do?loginName=username&password=password
有什么方法可以禁止 Struts 在表单中使用 URL 参数吗?
我目前的解决方法是使用一个过滤器来检查查询字符串,如果它包含应该在 POST 正文中的参数则重定向,但我正在寻找更优雅的解决方案。我不能只禁用 GET,因为其他一些需要类似解决方案的页面需要通过 GET 访问。
非常感谢任何帮助!
如果是 GET
,您可以从操作中检查请求的方法和 return
if(request.getMethod().equalsIgnoreCase("GET")
return mapping.findForward("error");
应用程序中登录页面的常规使用使用 DynaValidatorForm
,单击 'submit' 时会发出 POST 请求,其中包含用户的用户名和密码。然后在相关操作 class.
服务器代码:
protected ActionForward performAction(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
DynaValidatorForm dynaForm = (DynaValidatorForm) form;
//validation here
//...
//
Login login = new Login();
PropertyUtils.copyProperties(login, dynaForm);
//login object is used from here on out
但是,可以通过在 URL 中使用参数发出 GET 请求来登录,即 www.my-site.com/LoginPage.do?loginName=username&password=password
有什么方法可以禁止 Struts 在表单中使用 URL 参数吗?
我目前的解决方法是使用一个过滤器来检查查询字符串,如果它包含应该在 POST 正文中的参数则重定向,但我正在寻找更优雅的解决方案。我不能只禁用 GET,因为其他一些需要类似解决方案的页面需要通过 GET 访问。
非常感谢任何帮助!
如果是 GET
,您可以从操作中检查请求的方法和 returnif(request.getMethod().equalsIgnoreCase("GET")
return mapping.findForward("error");