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

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

该网站有一个访问者登录页面。它将使用用户名和加密的密码并将其发送到服务器,然后从服务器获取错误代码(用户名/密码不匹配)或身份验证密钥。当用户成功登录后,我希望网站自动跳转到main.jsp显示网站主要功能的页面。

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

那么,如何在整个页面上传递身份验证信息,又如何防止用户main.jsp无需登录即可直接访问?我需要使用会话或其他任何东西吗?

回答:

您可以尝试使用 :

过滤器可以在请求到达servlet之前对其进行预处理,对离开servlet的响应进行后处理,或者两者都进行。筛选器可以拦截,检查和修改请求和响应。

确保在用户登录后添加会话属性,您可以在过滤器上使用该会话属性

在您的 添加:

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

<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>

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() {

}

}

以上是 JSP页面应如何检查身份验证 的全部内容, 来源链接: utcz.com/qa/398778.html

回到顶部