gpt4 book ai didi

java - 我怎样才能停止直接访问网页而不需要在java中进行身份验证(自定义标签)

转载 作者:行者123 更新时间:2023-12-01 13:13:04 25 4
gpt4 key购买 nike

我正在使用 MVC(自定义标签),我想知道如何限制对应用程序页面的直接访问,除非经过身份验证,我尝试使用过滤器,但遇到了一个问题,它阻止了对登录页面本身的访问,我希望每个用户都可以访问登录页面,并且只有在经过身份验证后,他才能访问其他页面。请告诉我需要在代码中进行哪些更改?

在 Myjsp 文件夹中,我拥有所有 .jsp 页面 (\Tomcat 6.0\webapps\Myjsp),类文件位于classes/pack/java 中

下面是过滤器:

package pack.java;

import java.io.*;
import javax.servlet.*;

public class loginfilter implements Filter {
String aa;

public void destroy() {
}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
aa = request.getRequestURI();
chain.doFilter(request, response);
}

public void init(FilterConfig fconfig) throws ServletException {
}

}

Web.xml 条目:

<filter>
<filter-name>loginfilter</filter-name>
<filter-class>pack.java</filter-class>
</filter>

<filter-mapping>
<filter-name>loginfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

最佳答案

我最近也遇到了同样的问题。所以,我发现有两种方法可以做到这一点。第一个是使用应用程序服务器提供的工具,允许您对想要访问这些页面的所有用户进行身份验证。我只在 JBOSS AS7 上尝试过这个解决方案,它工作得很好,但我认为其他解决方案也允许你这样做,这里有一个链接,解释了你一般如何做到这一点,然后你只需要把它适应你的应用程序服务器 http://docs.oracle.com/javaee/6/tutorial/doc/gijrp.html .

但是,有时您需要对身份验证有更多控制,而不是依赖于这种类型的身份验证(在我的例子中,我还允许客户端通过 facebook 或 gmail 帐户进行身份验证),因此解决方案是使用仅过滤对私有(private)页面(需要身份验证)的调用的过滤器。据我所知,您的登录过滤器当前正在过滤您的所有页面(包括登录页面),因为您有以下内容:

<url-pattern>/*</url-pattern>

为了解决这个问题,我建议您将页面组织到两个文件夹中,一个包含公共(public)文件,另一个包含私有(private)文件,然后您可以将以下内容放入:

<url-pattern>/private_pages/*</url-pattern>

登录页面和所有其他页面将位于 public_pages 文件夹中。此外,过滤器还没有执行任何操作,因此您需要获取 http session 属性并查找用户是否经过身份验证(然后允许他查看页面或将他重定向到登录页面)。以下是我在调查与您相同的问题时发布的一些帖子的链接:- User authentication with J2EE- Authentication with Java EE- Session Tracking using J2EE

希望对大家有用。

关于java - 我怎样才能停止直接访问网页而不需要在java中进行身份验证(自定义标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689303/

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