gpt4 book ai didi

java - JSP 页面应该如何检查身份验证

转载 作者:数据小太阳 更新时间:2023-10-29 04:04:32 26 4
gpt4 key购买 nike

我是网络编程新手。我要求一种通用模式来执行诸如检查身份验证之类的操作。这是场景:

该网站有一个访问者登录页面。它将获取用户名和加密密码并将它们发送到服务器,然后从服务器获取错误代码(用户名/密码不匹配)或授权 key 。当用户登录成功后,我想让网站自动跳转到呈现网站主要功能的main.jsp页面。

在这种情况下,我希望main.jsp 检查用户身份验证。也就是说,我不希望用户可以直接打开 www.example.com/main.jsp 这样的事情发生,如果他们这样做了,我想将他们重定向到登录页面。

那么如何跨页面传递认证信息,如何防止用户在未登录的情况下直接访问main.jsp呢?我需要使用 session 或其他什么吗?

最佳答案

您可以尝试使用过滤器:

Filter can pre-process a request before it reaches a servlet, post-process a response leaving a servlet, or do both. Filters can intercept, examine, and modify requests and responses.

注意:请务必在用户登录后添加 session 属性,您可以在过滤器上使用该 session 属性

在您的 login.jsp 添加:

session.setAttribute("LOGIN_USER", user); 
//user entity if you have or user type of your user account...
//if not set then LOGIN_USER will be null

web.xml

<filter>
<filter-name>SessionCheckFilter</filter-name>
<filter-class>yourjavapackage.SessionCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionCheckFilter</filter-name>
<!--url-pattern>/app/*</url-pattern-->
<url-pattern>/main.jsp</url-pattern> <!-- url from where you implement the filtering -->
</filter-mapping>

SessionCheckFilter.java

public class SessionCheckFilter implements Filter {

private String contextPath;

@Override
public void init(FilterConfig fc) throws ServletException {
contextPath = fc.getServletContext().getContextPath();
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;

if (req.getSession().getAttribute("LOGIN_USER") == null) { //checks if there's a LOGIN_USER set in session...
res.sendRedirect(contextPath + "/login.jsp"); //or page where you want to redirect
} else {
String userType = (String) req.getSession().getAttribute("LOGIN_USER");
if (!userType.equals("ADMIN")){ //check if user type is not admin
res.sendRedirect(contextPath + "/login.jsp"); //or page where you want to
}
fc.doFilter(request, response);
}
}

@Override
public void destroy() {
}
}

关于java - JSP 页面应该如何检查身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961940/

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