Spring user login authentication function

1. Create a method annotation that defines the need to log in

package com.example.demo1.config;

import java.lang.annotation.*;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface NeedLogin {

}

2. Add a custom interceptor achieve HandlerInterceptor Interface

package com.example.demo1.config;

import com.example.demo1.dataobject.GiteeUser;
import com.example.demo1.pojo.User;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class AuthHanderInterceptor implements HandlerInterceptor {
    //复写方法
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //如果handler属于HandlerMethod
        if (handler instanceof HandlerMethod){
            //强转一下
            HandlerMethod handlerMethod = (HandlerMethod) handler;
            //取一下needLogin的注解
            NeedLogin needLogin = handlerMethod.getMethodAnnotation(NeedLogin.class);
            //判断该方法上面有没有NeedLogin注解
            if (needLogin !=null){
               GiteeUser u  = (GiteeUser) request.getSession().getAttribute("user");
               if (u==null){
                   response.sendRedirect("/Login.html");
                   return  false;
               }else {
                   response.sendRedirect("/LoginSuccess.html");
               }
            }
        }
        return true;
    }
}

3. Registration interceptor achieve WebMvcConfigurer Interface

package com.example.demo1.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class LoginWebMvcConfigurer implements WebMvcConfigurer {
    @Autowired
    private AuthHanderInterceptor authHanderInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
    //拦截所有方法
        registry.addInterceptor(authHanderInterceptor).addPathPatterns("/**");
    }
}

4. add annotations in the method

 @RequestMapping(path = "get")
    @NeedLogin
    public String get(GiteeUser giteeUser){
        giteeUser.setUsername("小豪");
        return giteeUser.getUsername();
    }
Published 13 original articles · won praise 0 · Views 690

Guess you like

Origin blog.csdn.net/qq_43496316/article/details/104087061