Commit b766122e by Jason Song Committed by GitHub

Merge pull request #757 from lepdou/user_type

add principal type check when get user info
parents 00184457 a416903d
...@@ -4,15 +4,28 @@ import com.ctrip.framework.apollo.portal.entity.bo.UserInfo; ...@@ -4,15 +4,28 @@ import com.ctrip.framework.apollo.portal.entity.bo.UserInfo;
import com.ctrip.framework.apollo.portal.spi.UserInfoHolder; import com.ctrip.framework.apollo.portal.spi.UserInfoHolder;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails;
import java.security.Principal;
public class SpringSecurityUserInfoHolder implements UserInfoHolder { public class SpringSecurityUserInfoHolder implements UserInfoHolder {
@Override @Override
public UserInfo getUser() { public UserInfo getUser() {
UserInfo userInfo = new UserInfo(); UserInfo userInfo = new UserInfo();
String userId = ((User) SecurityContextHolder.getContext().getAuthentication().getPrincipal()).getUsername(); userInfo.setUserId(getCurrentUsername());
userInfo.setUserId(userId);
return userInfo; return userInfo;
} }
private String getCurrentUsername() {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof UserDetails) {
return ((UserDetails) principal).getUsername();
}
if (principal instanceof Principal) {
return ((Principal) principal).getName();
}
return String.valueOf(principal);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment