package com.xcong.excoin.configurations.security;
|
|
import com.xcong.excoin.common.annotations.UserAuth;
|
import com.xcong.excoin.modules.member.entity.MemberEntity;
|
import org.springframework.core.MethodParameter;
|
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.web.bind.support.WebDataBinderFactory;
|
import org.springframework.web.context.request.NativeWebRequest;
|
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
|
import org.springframework.web.method.support.ModelAndViewContainer;
|
|
/**
|
* 自动注入登陆用户
|
*
|
* @author wzy
|
* @date 2020-05-13
|
**/
|
public class UserAuthenticationArgumentResolver implements HandlerMethodArgumentResolver {
|
|
@Override
|
public boolean supportsParameter(MethodParameter parameter) {
|
return parameter.getParameterAnnotation(UserAuth.class) != null && parameter.getParameterType().equals(MemberEntity.class);
|
}
|
|
@Override
|
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
|
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
|
if (authentication == null) {
|
return null;
|
}
|
|
MemberEntity auth = null;
|
if (authentication.getPrincipal() != null) {
|
auth = (MemberEntity) authentication.getPrincipal();
|
}
|
return auth;
|
}
|
}
|