From a8d9301e856e493beaedea27275c9e3244119991 Mon Sep 17 00:00:00 2001 From: smallchill <smallchill@163.com> Date: Sat, 15 Jun 2019 22:50:57 +0800 Subject: [PATCH] =?UTF-8?q?:tada:=20oauth=E7=94=B3=E8=AF=B7token=E5=8F=AF?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/auth/enums/BladeUserEnum.java | 45 +++++++++++++++++++ .../auth/service/BladeUserDetails.java | 2 +- .../service/BladeUserDetailsServiceImpl.java | 18 +++++++- .../org/springblade/auth/utils/TokenUtil.java | 2 + 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java diff --git a/blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java b/blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java new file mode 100644 index 00000000..5b87c3fc --- /dev/null +++ b/blade-auth/src/main/java/org/springblade/auth/enums/BladeUserEnum.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package org.springblade.auth.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 用户类型枚举 + * + * @author Chill + */ +@Getter +@AllArgsConstructor +public enum BladeUserEnum { + + /** + * web + */ + WEB("web", 1), + + /** + * app + */ + APP("app", 2), + ; + + final String name; + final int category; + +} diff --git a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java index bc296930..593ac6fd 100644 --- a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java +++ b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java @@ -59,7 +59,7 @@ public class BladeUserDetails extends User { */ private String avatar; - BladeUserDetails(Long userId, String tenantId, String name, String roleId, String roleName, String avatar, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) { + public BladeUserDetails(Long userId, String tenantId, String name, String roleId, String roleName, String avatar, String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); this.userId = userId; this.tenantId = tenantId; diff --git a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java index 2f94dfaa..4ca59085 100644 --- a/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java +++ b/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java @@ -19,6 +19,7 @@ package org.springblade.auth.service; import lombok.AllArgsConstructor; import lombok.SneakyThrows; import org.springblade.auth.constant.AuthConstant; +import org.springblade.auth.enums.BladeUserEnum; import org.springblade.auth.utils.TokenUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; @@ -49,8 +50,23 @@ public class BladeUserDetailsServiceImpl implements UserDetailsService { @SneakyThrows public UserDetails loadUserByUsername(String username) { HttpServletRequest request = WebUtil.getRequest(); + // 获取租户 String tenantId = Func.toStr(request.getHeader(TokenUtil.TENANT_HEADER_KEY), TokenUtil.DEFAULT_TENANT_ID); - R<UserInfo> result = userClient.userInfo(tenantId, username); + // 获取用户类型 + String userType = Func.toStr(request.getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE); + + // 远程调用返回数据 + R<UserInfo> result; + // 根据不同用户类型调用对应的接口返回数据,用户可自行拓展 + if (userType.equals(BladeUserEnum.WEB.getName())) { + result = userClient.userInfo(tenantId, username); + } else if (userType.equals(BladeUserEnum.APP.getName())) { + result = userClient.userInfo(tenantId, username); + } else { + result = userClient.userInfo(tenantId, username); + } + + // 判断返回信息 if (result.isSuccess()) { User user = result.getData().getUser(); if (user == null) { diff --git a/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java b/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java index f097ffa7..ae0261b4 100644 --- a/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java +++ b/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java @@ -49,6 +49,8 @@ public class TokenUtil { public final static String TENANT_HEADER_KEY = "Tenant-Id"; public final static String DEFAULT_TENANT_ID = "000000"; + public final static String USER_TYPE_HEADER_KEY = "User-Type"; + public final static String DEFAULT_USER_TYPE = "web"; public final static String USER_NOT_FOUND = "用户名或密码错误"; public final static String HEADER_KEY = "Authorization"; public final static String HEADER_PREFIX = "Basic ";