Spring Boot教程
作者: 时海
拦截器实现登录功能

SpringBoot使用拦截器实现登录功能

1、拦截器配置

拦截器类

package com.example.common;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
        String token = (String) request.getSession().getAttribute("TOKEN");
        if (token != null && !token.isEmpty()) {
            return true;
        } else {
            request.getRequestDispatcher("/login.html").forward(request, response);
            return false;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

    }

}

拦截器配置

package com.example.common;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class LoginConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration registration = registry.addInterceptor(new LoginInterceptor());
        registration.addPathPatterns("/**")
                .excludePathPatterns(
                        "/**/*.html",
                        "/**/*.js",
                        "/**/*.css",
                        "/user/login"
                )
                .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**",
                        "/swagger-ui.html/**", "/csrf");

    }
}

2、控制器类

package com.example.boot;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@RestController
@RequestMapping("/user")
@Api("用户API")
public class UserController {
    @Autowired
    UserMapper userMapper;

    @PostMapping(value = "/login")
    @ApiOperation(value = "用户登录", notes = "用户登录", httpMethod = "POST")
    @ApiImplicitParams(
            {
                    @ApiImplicitParam(name = "username", value = "Username", paramType = "query",
                            required = true, dataType = "String"),
                    @ApiImplicitParam(name = "password", value = "Password", paramType = "query",
                            required = true, dataType = "String")
            }
    )
    public String login(HttpServletRequest request, HttpServletResponse response, Person person) throws ServletException, IOException {
        if (person != null && person.getUsername() != null && person.getPassword() != null) {
            request.getSession().setAttribute("TOKEN", person.getUsername());
            return "login success: " + person.getUsername();
        } else {
            request.getRequestDispatcher("/index.html").forward(request, response);
            return null;
        }
    }

    @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
    @ApiOperation(value = "根据id查询用户", notes = "查询单个用户")
    @ApiImplicitParam(name = "id", value = "UserId", paramType = "path",
            required = true, defaultValue = "1", dataTypeClass = Integer.class)
    public User getUser(@PathVariable("id") Integer id) {
        User user = userMapper.getUser(id);
        return user;
    }

}




一个创业中的苦逼程序员
  • 回复
隐藏