gpt4 book ai didi

java - 限制对 servlet 的访问

转载 作者:行者123 更新时间:2023-11-28 22:06:41 29 4
gpt4 key购买 nike

我有一个网关 sevlet,它将用户转发到许多处理任务的 servlet。

每个用户必须首先通过网关 servlet,然后将它们转发到适当的 servlet。我创建了一个 RequestDispatcher 并将它的转发功能执行到适当的 servlet。

问题是所有的 servlet 都是公开可用的,因此用户实际上可以去执行他们想要的任何 servlet。

我只想允许访问网关 servlet 并限制对所有其他人的访问。但当然要允许网关转发到 servlet。

怎么做到的?

谢谢!

使用 apache tomcat 7

最佳答案

使用过滤器检查当前用户是否登录,您需要通过检查 session 属性自己编写方法 userIsLoggedIn():

public class LoginFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {

if (userIsLoggedIn()) {

//process request normally, pass up the filter chain to the servlet:
chain.doFilter(req, res);

} else {

//go to login screen instead
RequestDispatcher dispatcher = getRequestDispatcher("login");
dispatcher.forward( request, response );
}
}
}

在你的 web.xml 中,你需要声明你的过滤器:

<filter>
<filter-name>loginFilter</filter-name>
<filter-class>
com.foo.LoginFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

关于java - 限制对 servlet 的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663791/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com