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();
}