App用户注册完自动登录

This commit is contained in:
2023-08-15 19:12:18 +08:00
parent c7050e9747
commit 422e7ef9d9
6 changed files with 44 additions and 33 deletions

View File

@@ -37,7 +37,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http http
.authorizeRequests() .authorizeRequests()
.antMatchers("/oauth/getPublicKey","/oauth/logout","/auth/getImgCode","/judgeToken/guangZhou").permitAll() .antMatchers("/oauth/getPublicKey","/oauth/logout","/auth/getImgCode","/judgeToken/guangZhou","/oauth/autoLogin").permitAll()
// @link https://gitee.com/xiaoym/knife4j/issues/I1Q5X6 (接口文档knife4j需要放行的规则) // @link https://gitee.com/xiaoym/knife4j/issues/I1Q5X6 (接口文档knife4j需要放行的规则)
.antMatchers("/webjars/**","/doc.html","/swagger-resources/**","/v2/api-docs").permitAll() .antMatchers("/webjars/**","/doc.html","/swagger-resources/**","/v2/api-docs").permitAll()
.anyRequest().authenticated() .anyRequest().authenticated()

View File

@@ -17,6 +17,7 @@ import com.njcn.redis.utils.RedisUtil;
import com.njcn.user.api.UserFeignClient; import com.njcn.user.api.UserFeignClient;
import com.njcn.web.controller.BaseController; import com.njcn.web.controller.BaseController;
import com.njcn.web.utils.RequestUtil; import com.njcn.web.utils.RequestUtil;
import com.njcn.web.utils.RestTemplateUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
@@ -28,8 +29,10 @@ import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint; import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint;
import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import java.net.URI;
import java.security.KeyPair; import java.security.KeyPair;
import java.security.Principal; import java.security.Principal;
import java.security.interfaces.RSAPublicKey; import java.security.interfaces.RSAPublicKey;
@@ -148,5 +151,25 @@ public class AuthController extends BaseController {
return new JWKSet(key).toJSONObject(); return new JWKSet(key).toJSONObject();
} }
/**
* 自动登录
*/
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.AUTHENTICATE)
@ApiOperation("自动登录")
@PostMapping("/autoLogin")
@ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query")
@ApiIgnore
public HttpResult<Object> autoLogin(@RequestParam String phone) {
String methodDescribe = getMethodDescribe("autoLogin");
String userUrl = "http://127.0.0.1:10214/oauth/token";
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(userUrl)
.queryParam("grant_type", "sms_code")
.queryParam("client_id", "njcnapp")
.queryParam("client_secret", "njcnpqs")
.queryParam("phone", phone)
.queryParam("smsCode", "123456789");
URI uri = builder.build().encode().toUri();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, Objects.requireNonNull(RestTemplateUtil.post(uri, HttpResult.class).getBody()).getData(), methodDescribe);
}
} }

View File

@@ -462,7 +462,7 @@ public class PubUtils {
* 生成随机推荐码 * 生成随机推荐码
*/ */
public static String getCode(Integer number){ public static String getCode(Integer number){
final String BASIC = "123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZZ"; final String BASIC = "123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
char[] basicArray = BASIC.toCharArray(); char[] basicArray = BASIC.toCharArray();
Random random = new Random(); Random random = new Random();
char[] result = new char[number]; char[] result = new char[number];

View File

@@ -186,9 +186,9 @@ whitelist:
- /user-boot/user/updateFirstPassword - /user-boot/user/updateFirstPassword
- /user-boot/appUser/authCode - /user-boot/appUser/authCode
- /user-boot/appUser/register - /user-boot/appUser/register
- /user-boot/appUser/autoLogin
- /pqs-auth/oauth/logout - /pqs-auth/oauth/logout
- /pqs-auth/oauth/token - /pqs-auth/oauth/token
- /pqs-auth/oauth/autoLogin
- /pqs-auth/auth/getImgCode - /pqs-auth/auth/getImgCode
- /pqs-auth/oauth/getPublicKey - /pqs-auth/oauth/getPublicKey
- /pqs-auth/judgeToken/guangZhou - /pqs-auth/judgeToken/guangZhou

View File

@@ -81,14 +81,15 @@ public class AppUserController extends BaseController {
* app用户注册完自动登录 * app用户注册完自动登录
*/ */
@OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD) @OperateInfo(info = LogEnum.SYSTEM_COMMON, operateType = OperateType.ADD)
@PostMapping("autoLogin") @PostMapping("appAutoLogin")
@ApiOperation("app用户注册完自动登录") @ApiOperation("app用户注册完自动登录")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"), @ApiImplicitParam(name = "phone", value = "手机号", required = true, paramType = "query"),
@ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query") @ApiImplicitParam(name = "devCode", value = "设备码", required = true, paramType = "query")
}) })
public HttpResult<Object> autoLogin(@Param("phone") String phone,@Param("devCode") String devCode) { @Deprecated
String methodDescribe = getMethodDescribe("autoLogin"); public HttpResult<Object> appAutoLogin(@Param("phone") String phone,@Param("devCode") String devCode) {
String methodDescribe = getMethodDescribe("appAutoLogin");
Object object = appUserService.autoLogin(phone,devCode); Object object = appUserService.autoLogin(phone,devCode);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, object, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, object, methodDescribe);
} }

View File

@@ -9,12 +9,10 @@ import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType; import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.profile.IClientProfile;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.constant.PatternRegex; import com.njcn.common.pojo.constant.PatternRegex;
import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.PubUtils; import com.njcn.common.utils.PubUtils;
import com.njcn.common.utils.sm.Sm4Utils; import com.njcn.common.utils.sm.Sm4Utils;
import com.njcn.redis.pojo.enums.RedisKeyEnum; import com.njcn.redis.pojo.enums.RedisKeyEnum;
@@ -31,21 +29,20 @@ import com.njcn.user.pojo.po.UserSet;
import com.njcn.user.pojo.po.app.AppInfoSet; import com.njcn.user.pojo.po.app.AppInfoSet;
import com.njcn.user.pojo.po.app.AppSendMsg; import com.njcn.user.pojo.po.app.AppSendMsg;
import com.njcn.user.service.*; import com.njcn.user.service.*;
import com.njcn.web.utils.RestTemplateUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.Objects; import java.util.Objects;
import java.util.Random; import java.util.Random;
//import com.njcn.auth.api.AuthFeignClient;
/** /**
* 类的介绍: * 类的介绍:
* *
@@ -71,6 +68,8 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> impleme
private final IUserRoleService userRoleService; private final IUserRoleService userRoleService;
// private final AuthFeignClient authFeignClient;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void setMessage(String phone, String devCode, String type) { public void setMessage(String phone, String devCode, String type) {
@@ -211,11 +210,16 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> impleme
@Override @Override
public Object autoLogin(String phone, String devCode) { public Object autoLogin(String phone, String devCode) {
//获取登录信息 //获取登录信息
Object object = autoLogin(phone); // Object object = authFeignClient.autoLogin(phone).getData();
if (Objects.isNull(object)){ // if (Objects.isNull(object)){
throw new BusinessException(UserResponseEnum.LOGIN_ERROR); // throw new BusinessException(UserResponseEnum.LOGIN_ERROR);
} // }
return object; // //修改设备码
// User user = this.lambdaQuery().eq(User::getPhone,phone).one();
// user.setDevCode(devCode);
// this.updateById(user);
// return object;
return null;
} }
@Override @Override
@@ -422,21 +426,4 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, User> impleme
return user; return user;
} }
/**
* 用户注册完成后自动登录
* @param phone 手机号码
* @return
*/
public Object autoLogin(String phone) {
String userUrl = "http://127.0.0.1:10214/oauth/token";
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(userUrl)
.queryParam("grant_type", "sms_code")
.queryParam("client_id", "njcnapp")
.queryParam("client_secret", "njcnpqs")
.queryParam("phone", phone)
.queryParam("smsCode", "123456789");
URI uri = builder.build().encode().toUri();
return Objects.requireNonNull(RestTemplateUtil.post(uri, HttpResult.class).getBody()).getData();
}
} }