mirror of
https://gitee.com/youlaitech/youlai-mall.git
synced 2024-12-23 05:00:25 +08:00
refactor: 认证方式调整为认证身份标识重命名
This commit is contained in:
parent
1ba35954a8
commit
774a7fa799
@ -1,6 +1,7 @@
|
||||
package com.youlai.admin.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -98,7 +99,7 @@ public class SysPermissionServiceImpl extends ServiceImpl<SysPermissionMapper, S
|
||||
.filter(item -> StrUtil.isNotBlank(item.getBtnPerm()))
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtil.isNotEmpty(btnPermList)) {
|
||||
Map<String, List<String>> btnPermRoles = CollectionUtil.newHashMap();
|
||||
Map<String, List<String>> btnPermRoles = MapUtil.newHashMap();
|
||||
btnPermList.stream().forEach(item -> {
|
||||
String perm = item.getBtnPerm();
|
||||
List<String> roles = item.getRoles();
|
||||
|
@ -24,10 +24,11 @@ public class MemberUserDetails implements UserDetails {
|
||||
private Boolean enabled;
|
||||
|
||||
/**
|
||||
* 认证方式
|
||||
* 扩展字段:认证身份标识,枚举值如下:
|
||||
*
|
||||
* @see com.youlai.common.enums.AuthenticationIdentityEnum
|
||||
*/
|
||||
private String authenticationMethod;
|
||||
|
||||
private String authenticationIdentity;
|
||||
|
||||
/**
|
||||
* 小程序会员用户体系
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.youlai.auth.security.core.userdetails.member;
|
||||
|
||||
import com.youlai.common.enums.AuthenticationMethodEnum;
|
||||
import com.youlai.common.enums.AuthenticationIdentityEnum;
|
||||
import com.youlai.common.result.Result;
|
||||
import com.youlai.common.result.ResultCode;
|
||||
import com.youlai.mall.ums.api.MemberFeignClient;
|
||||
@ -44,7 +44,7 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
|
||||
MemberAuthInfoDTO member = result.getData();
|
||||
if (null != member) {
|
||||
userDetails = new MemberUserDetails(member);
|
||||
userDetails.setAuthenticationMethod(AuthenticationMethodEnum.MOBILE.getValue()); // 认证方式:OpenId
|
||||
userDetails.setAuthenticationIdentity(AuthenticationIdentityEnum.MOBILE.getValue()); // 认证身份标识:mobile
|
||||
}
|
||||
}
|
||||
if (userDetails == null) {
|
||||
@ -68,11 +68,12 @@ public class MemberUserDetailsServiceImpl implements UserDetailsService {
|
||||
public UserDetails loadUserByOpenId(String openId) {
|
||||
MemberUserDetails userDetails = null;
|
||||
Result<MemberAuthInfoDTO> result = memberFeignClient.loadUserByOpenId(openId);
|
||||
|
||||
if (Result.isSuccess(result)) {
|
||||
MemberAuthInfoDTO member = result.getData();
|
||||
if (null != member) {
|
||||
userDetails = new MemberUserDetails(member);
|
||||
userDetails.setAuthenticationMethod(AuthenticationMethodEnum.OPENID.getValue()); // 认证方式:OpenId
|
||||
userDetails.setAuthenticationIdentity(AuthenticationIdentityEnum.OPENID.getValue()); // 认证方式:openId
|
||||
}
|
||||
}
|
||||
if (userDetails == null) {
|
||||
|
@ -23,10 +23,20 @@ import java.util.Collection;
|
||||
public class SysUserDetails implements UserDetails {
|
||||
|
||||
/**
|
||||
* 扩展字段
|
||||
* 扩展字段:用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
private String authenticationMethod;
|
||||
|
||||
/**
|
||||
* 扩展字段:认证身份标识,枚举值如下:
|
||||
*
|
||||
* @see com.youlai.common.enums.AuthenticationIdentityEnum
|
||||
*/
|
||||
private String authenticationIdentity;
|
||||
|
||||
/**
|
||||
* 扩展字段:部门ID
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
|
@ -2,7 +2,7 @@ package com.youlai.auth.security.extension.refresh;
|
||||
|
||||
import com.youlai.auth.security.core.userdetails.member.MemberUserDetailsServiceImpl;
|
||||
import com.youlai.common.constant.SecurityConstants;
|
||||
import com.youlai.common.enums.AuthenticationMethodEnum;
|
||||
import com.youlai.common.enums.AuthenticationIdentityEnum;
|
||||
import com.youlai.common.web.util.RequestUtils;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
@ -52,13 +52,13 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
|
||||
@Override
|
||||
public UserDetails loadUserDetails(T authentication) throws UsernameNotFoundException {
|
||||
String clientId = RequestUtils.getOAuth2ClientId();
|
||||
// 获取认证方式,默认是用户名 username
|
||||
AuthenticationMethodEnum authenticationMethodEnum = AuthenticationMethodEnum.getByValue(RequestUtils.getAuthenticationMethod());
|
||||
// 获取认证身份标识,默认是用户名:username
|
||||
AuthenticationIdentityEnum authenticationIdentityEnum = AuthenticationIdentityEnum.getByValue(RequestUtils.getAuthenticationIdentity());
|
||||
UserDetailsService userDetailsService = userDetailsServiceMap.get(clientId);
|
||||
if (clientId.equals(SecurityConstants.APP_CLIENT_ID)) {
|
||||
// 移动端的用户体系是会员,认证方式是通过手机号 mobile 认证
|
||||
MemberUserDetailsServiceImpl memberUserDetailsService = (MemberUserDetailsServiceImpl) userDetailsService;
|
||||
switch (authenticationMethodEnum) {
|
||||
switch (authenticationIdentityEnum) {
|
||||
case MOBILE:
|
||||
return memberUserDetailsService.loadUserByMobile(authentication.getName());
|
||||
default:
|
||||
@ -67,7 +67,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
|
||||
} else if (clientId.equals(SecurityConstants.WEAPP_CLIENT_ID)) {
|
||||
// 小程序的用户体系是会员,认证方式是通过微信三方标识 openid 认证
|
||||
MemberUserDetailsServiceImpl memberUserDetailsService = (MemberUserDetailsServiceImpl) userDetailsService;
|
||||
switch (authenticationMethodEnum) {
|
||||
switch (authenticationIdentityEnum) {
|
||||
case OPENID:
|
||||
return memberUserDetailsService.loadUserByOpenId(authentication.getName());
|
||||
default:
|
||||
@ -75,7 +75,7 @@ public class PreAuthenticatedUserDetailsService<T extends Authentication> implem
|
||||
}
|
||||
} else if (clientId.equals(SecurityConstants.ADMIN_CLIENT_ID)) {
|
||||
// 管理系统的用户体系是系统用户,认证方式通过用户名 username 认证
|
||||
switch (authenticationMethodEnum) {
|
||||
switch (authenticationIdentityEnum) {
|
||||
default:
|
||||
return userDetailsService.loadUserByUsername(authentication.getName());
|
||||
}
|
||||
|
@ -58,6 +58,11 @@ public interface SecurityConstants {
|
||||
|
||||
String REFRESH_TOKEN_KEY = "refresh_token";
|
||||
|
||||
/**
|
||||
* 认证身份标识
|
||||
*/
|
||||
String AUTHENTICATION_IDENTITY_KEY = "authenticationIdentity";
|
||||
|
||||
String APP_API_PATTERN = "/*/app-api/**";
|
||||
|
||||
String LOGOUT_PATH = "/youlai-auth/oauth/logout";
|
||||
@ -67,11 +72,6 @@ public interface SecurityConstants {
|
||||
*/
|
||||
String SAVE_MENU_PATH = "/youlai-admin/api/v1/menus";
|
||||
|
||||
/**
|
||||
* 认证方式
|
||||
*/
|
||||
String AUTHENTICATION_METHOD = "authenticationMethod";
|
||||
|
||||
/**
|
||||
* 验证码key前缀
|
||||
*/
|
||||
|
@ -5,7 +5,7 @@ import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.nimbusds.jose.JWSObject;
|
||||
import com.youlai.common.constant.SecurityConstants;
|
||||
import com.youlai.common.enums.AuthenticationMethodEnum;
|
||||
import com.youlai.common.enums.AuthenticationIdentityEnum;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
@ -62,22 +62,22 @@ public class RequestUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析JWT获取获取认证方式
|
||||
* 解析JWT获取获取认证身份标识
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@SneakyThrows
|
||||
public static String getAuthenticationMethod() {
|
||||
public static String getAuthenticationIdentity() {
|
||||
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
||||
String refreshToken = request.getParameter(SecurityConstants.REFRESH_TOKEN_KEY);
|
||||
|
||||
String payload = StrUtil.toString(JWSObject.parse(refreshToken).getPayload());
|
||||
JSONObject jsonObject = JSONUtil.parseObj(payload);
|
||||
|
||||
String authenticationMethod = jsonObject.getStr(SecurityConstants.AUTHENTICATION_METHOD);
|
||||
if (StrUtil.isBlank(authenticationMethod)) {
|
||||
authenticationMethod = AuthenticationMethodEnum.USERNAME.getValue();
|
||||
String authenticationIdentity = jsonObject.getStr(SecurityConstants.AUTHENTICATION_IDENTITY_KEY);
|
||||
if (StrUtil.isBlank(authenticationIdentity)) {
|
||||
authenticationIdentity = AuthenticationIdentityEnum.USERNAME.getValue();
|
||||
}
|
||||
return authenticationMethod;
|
||||
return authenticationIdentity;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user