我正在使用struts2开发业务应用程序。 我想限制直接访问网址。 如果用户通过浏览器URL直接访问操作,则不要单击该链接, 我想显示错误页面。(您不能使用网址直接访问。)
如果有人有解决方案,请与我分享。 谢谢。
答案 0 :(得分:1)
要求很奇怪&我不明白背后的原因。
但是让我解释一下如何实现这样的功能:
当发出直接网址请求时,请求中不会显示Referer
标头。
您可以简单地编写一个拦截器来检查传入的请求是否具有Referer
标题&它来自你的域名。如果不是,那么如果是,则可以发送错误然后继续。
虽然很容易绕过这个,但是大多数用户都不会这样做。
示例拦截器代码:
public String intercept(ActionInvocation ai) throws Exception {
HttpServletRequest request =
(HttpServletRequest) ai.getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
if (request != null) {
if (request.getHeader("Referer") == null) {
return "error";
}
return ai.invoke();
}
}
答案 1 :(得分:0)
用户可以发出请求,这是一个网址。
此网址可以称为
他们有很多方法。你无法确定应该使用哪一个。您的服务器(Struts Action)接收这些请求并处理它们。
即使您可以通过链接或按钮识别请求cam,也无法信任它。黑客可以很容易地模仿来自不同来源的请求对象。
我相信你没有走正确的道路。或者请解释更多。
答案 2 :(得分:0)
您可以检查会话中的特定值,以便确认请求是否为授权请求,您甚至可以检查请求中的某些值,您可以使用JSP中的隐藏字段来实现此目的。检查可以在方法prepare()
中完成,在每次调用操作时都会执行,因此在呈现jsp之前,您可以通过在prepare方法中编写逻辑来轻松地重定向到任何页面。使用您想要实现Preparable
接口