8.3 注销及权限过滤
这个 权限过滤咱们写过,注销其实也写过。权限过滤就是判断你是否 有 USER_SESSION 那个 键值对 数据。如果有的话,我们就可以直接访问 首页,如果没有,就不让访问。注销 就是 删除掉 USER_SESSION 然后 重定义到 登录界面。所以整体来说 还是很简单的。
- 权限过滤
package com.muquanyu.filter;
import com.muquanyu.util.Constants;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
public class SysFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)servletRequest;
HttpServletResponse resp = (HttpServletResponse)servletResponse;
HttpSession session = req.getSession();
Object userSession = session.getAttribute(Constants.USER_SESSION);
if(userSession == null){
req.getServletContext().setAttribute("error","您未曾登录,请登录一下再访问首页!");
resp.sendRedirect("/smbms_war/login.jsp");
//Object error = req.getAttribute("error");
}
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
//Filter.super.destroy();
}
}
- 注销用户
package com.muquanyu.servlet.user;
import com.muquanyu.util.Constants;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
Object userSession = session.getAttribute(Constants.USER_SESSION);
if(userSession != null){
//把 这个 登录的 记录 抹除掉
session.removeAttribute(Constants.USER_SESSION);
}
resp.sendRedirect("/smbms_war/login.jsp");
//super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//super.doPost(req, resp);
}
}