1. 程式人生 > 實用技巧 >Spring Boot專案開發(六)——編寫過濾器,統一處理登入許可權

Spring Boot專案開發(六)——編寫過濾器,統一處理登入許可權

一、編寫過濾器

package com.learn.mall.filter;


import com.learn.mall.common.Constant;
import com.learn.mall.model.pojo.User;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.PrintWriter; /** * 使用者登入許可權過濾器 */ public class AdminFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpSession session = request.getSession(); //判斷使用者是否登入 User user = (User) session.getAttribute(Constant.USER); if(user == null){ PrintWriter out
= new HttpServletResponseWrapper((HttpServletResponse)servletResponse).getWriter(); out.write("{\"status\":\"10007\",\"msg\":\"NEED_LOGIN\",\"data\":\"null\"}"); out.flush(); out.close(); return ; } //判斷使用者是否是超級管理員 if(user.getRole().equals(1)){ PrintWriter out = new HttpServletResponseWrapper((HttpServletResponse)servletResponse).getWriter(); out.write("{\"status\":\"10008\",\"msg\":\"NEED_ADMIN\",\"data\":\"null\"}"); out.flush(); out.close(); }else{ //管理員登入則放行,執行後面的操作 filterChain.doFilter(servletRequest,servletResponse); } } @Override public void destroy() { } }

二、編寫過濾器配置檔案

package com.learn.mall.config;

import com.learn.mall.filter.AdminFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 使用者登入許可權過濾器的配置
 */
@Configuration
public class AdminFilterConfig {
    @Bean
    public AdminFilter adminFilter(){
        return new AdminFilter();
    }

    @Bean(name = "adminFilterConf")
    public FilterRegistrationBean adminFilterConfig(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(adminFilter());
        filterRegistrationBean.addUrlPatterns("/admin/category/*");
        filterRegistrationBean.addUrlPatterns("/admin/product/*");
        filterRegistrationBean.addUrlPatterns("/admin/order/*");
        filterRegistrationBean.setName("adminFilterConf");
        return filterRegistrationBean;
    }
}