春のユーザログイン認証機能

1.ログインする必要性を定義する方法注釈を作成します。

package com.example.demo1.config;

import java.lang.annotation.*;

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

}

2. HandlerInterceptorインタフェースを実現インターセプタカスタムを追加

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.登録インターセプタはWebMvcConfigurerインタフェースを実現します

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.

 @RequestMapping(path = "get")
    @NeedLogin
    public String get(GiteeUser giteeUser){
        giteeUser.setUsername("小豪");
        return giteeUser.getUsername();
    }
公開された13元の記事 ウォンの賞賛0 ビュー690

おすすめ

転載: blog.csdn.net/qq_43496316/article/details/104087061