Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-cloud-account
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.account
pica-cloud-account
提交
6972ad6d
提交
6972ad6d
编写于
2月 25, 2020
作者:
Chongwen.jiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
IP获取测试代码添加,,,.
发送验证码请求体添加device_token(设备id)
上级
1562927c
变更
7
展开全部
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
277 行增加
和
149 行删除
+277
-149
pom.xml
server/pom.xml
+12
-0
AutoCodeController.java
...account/account/server/controller/AutoCodeController.java
+82
-61
LoginController.java
...ud/account/account/server/controller/LoginController.java
+5
-6
BaseRequest.java
...om/pica/cloud/account/account/server/req/BaseRequest.java
+10
-0
LoginService.java
...ca/cloud/account/account/server/service/LoginService.java
+1
-1
LoginServiceImpl.java
...account/account/server/service/impl/LoginServiceImpl.java
+97
-81
IPUtil.java
...va/com/pica/cloud/account/account/server/util/IPUtil.java
+70
-0
未找到文件。
server/pom.xml
浏览文件 @
6972ad6d
...
...
@@ -164,6 +164,18 @@
<version>
1.0.1
</version>
</dependency>
<!-- apple identifyToken校验 -->
<dependency>
<groupId>
io.jsonwebtoken
</groupId>
<artifactId>
jjwt
</artifactId>
<version>
0.9.1
</version>
</dependency>
<dependency>
<groupId>
com.auth0
</groupId>
<artifactId>
jwks-rsa
</artifactId>
<version>
0.9.0
</version>
</dependency>
</dependencies>
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/AutoCodeController.java
浏览文件 @
6972ad6d
...
...
@@ -14,10 +14,7 @@ import com.pica.cloud.account.account.server.resp.UnifiedVerificationResp;
import
com.pica.cloud.account.account.server.service.AccountService
;
import
com.pica.cloud.account.account.server.service.AccountUnionService
;
import
com.pica.cloud.account.account.server.service.CaptchaService
;
import
com.pica.cloud.account.account.server.util.AESUtil
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.CryptoUtil
;
import
com.pica.cloud.account.account.server.util.RegisterCodeKeyUtils
;
import
com.pica.cloud.account.account.server.util.*
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
...
...
@@ -29,10 +26,12 @@ import com.pica.cloud.riskcontrol.riskcontrol.common.req.CheckcodeRiskReq;
import
com.pica.cloud.riskcontrol.riskcontrol.common.resp.CheckcodeRiskResp
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.catalina.servlet4preview.http.HttpServletRequest
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -64,23 +63,33 @@ public class AutoCodeController extends AccountBaseController {
@Autowired
private
CheckCodeClient
rcClient
;
@GetMapping
(
"/ip"
)
public
PicaResponse
getIp
(
HttpServletRequest
request
){
return
PicaResponse
.
toResponse
(
IPUtil
.
getIpAdrress
(
request
));
}
@ApiOperation
(
"获取短信验证码,无需图形验证码,如app端"
)
@PostMapping
(
value
=
"/authCode"
)
public
PicaResponse
getAuthCode
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
public
PicaResponse
getAuthCode
(
@RequestBody
EncryptEntity
entity
,
HttpServletRequest
req
)
throws
Exception
{
// 验证码类型 0默认 1注册 2微信登录绑定手机 3修改手机
// 4重置密码 5忘记密码 7患者招募提交问卷(效验) 8Appe登录绑定手机
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
AccountUtils
.
checkMobilePhone
(
request
.
getMobile
());
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
)){
// TODO 调用风控接口
UnifiedVerificationResp
rcResp
=
rcValidate
(
request
.
getMobile
(),
request
.
getFlag
());
if
(
rcResp
==
null
){
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
))
{
// 调用风控接口
UnifiedVerificationResp
rcResp
=
this
.
rcValidate
(
request
.
getMobile
(),
request
.
getFlag
(),
IPUtil
.
getIpAdrress
(
req
),
super
.
getDeviceInfo
(),
request
.
getDevice_token
());
if
(
rcResp
==
null
)
{
// 风控接口调用异常也继续后面的逻辑
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
return
PicaResponse
.
toResponse
();
}
else
{
if
(
null
==
rcResp
.
getBizCode
())
{
if
(
null
==
rcResp
.
getBizCode
())
{
// 风控校验后允许发送短信验证码
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
return
PicaResponse
.
toResponse
();
...
...
@@ -220,27 +229,42 @@ public class AutoCodeController extends AccountBaseController {
* @Params [mobile]
* @Return com.pica.cloud.account.account.server.resp.UnifiedVerificationResp
*/
private
UnifiedVerificationResp
rcValidate
(
String
mobile
,
Integer
flag
)
{
private
UnifiedVerificationResp
rcValidate
(
String
mobile
,
Integer
flag
,
String
publicIp
,
String
deviceInfoStr
,
String
deviceToken
)
{
// 调用风控接口
try
{
logger
.
info
(
"rcValidate-publicIp:{}, deviceToken:{}, deviceInfoStr:{}"
,
publicIp
,
deviceToken
,
deviceInfoStr
);
CheckcodeRiskReq
rcReq
=
new
CheckcodeRiskReq
();
rcReq
.
setMobile
(
mobile
);
/*rcReq.setDeviceId(
);
rcReq.setIp(
);
rcReq.setDeviceIp(
);*/
logger
.
info
(
"rc-req:{}"
,
JSON
.
toJSONString
(
rcReq
));
rcReq
.
setIp
(
publicIp
);
PICAPDeviceInfo
deviceInfo
=
JSON
.
parseObject
(
deviceInfoStr
,
PICAPDeviceInfo
.
class
);
rcReq
.
setDeviceIp
(
deviceInfo
.
getDevice_ip
());
rcReq
.
setDeviceId
(
deviceToken
);
logger
.
info
(
"rc-
checkcodeRisk-
req:{}"
,
JSON
.
toJSONString
(
rcReq
));
PicaResponse
picaResponse
=
rcClient
.
checkcodeRisk
(
rcReq
);
logger
.
info
(
"rc-resp:{}"
,
JSON
.
toJSONString
(
picaResponse
));
logger
.
info
(
"rc-
checkcodeRisk-
resp:{}"
,
JSON
.
toJSONString
(
picaResponse
));
if
(
picaResponse
!=
null
&&
PicaResultCode
.
SUCCESS
.
code
().
equals
(
picaResponse
.
getCode
()))
{
Object
data
=
picaResponse
.
getData
();
if
(
Objects
.
nonNull
(
data
))
{
JSONObject
respData
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
data
),
JSONObject
.
class
);
if
(
StringUtils
.
isNotEmpty
(
respData
.
getString
(
"processCode"
)))
{
Integer
processCode
=
Integer
.
valueOf
(
respData
.
getString
(
"processCode"
));
if
(
null
!=
processCode
)
{
if
(
Objects
.
isNull
(
data
))
{
return
null
;
}
CheckcodeRiskResp
respData
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
data
),
CheckcodeRiskResp
.
class
);
if
(
StringUtils
.
isEmpty
(
respData
.
getProcessCode
())){
// 请求返回异常
return
null
;
}
Integer
processCode
=
Integer
.
valueOf
(
respData
.
getProcessCode
());
if
(
null
==
processCode
){
// 请求返回的processCode异常
return
null
;
}
// 请求返回正常
if
(
processCode
.
equals
(
BizTypeRespEnum
.
RC_SEND_FAIL
.
getCode
()))
{
UnifiedVerificationResp
resp
=
new
UnifiedVerificationResp
();
resp
.
setBizCode
(
BizTypeRespEnum
.
RC_SEND_FAIL
.
getCode
());
...
...
@@ -272,15 +296,12 @@ public class AutoCodeController extends AccountBaseController {
.
replace
(
"{remainTime}"
,
String
.
valueOf
(
remainTime
)));
}
return
resp
;
}
}
}
}
}
else
{
// processCode=1(允许发送短信验证码)
return
new
UnifiedVerificationResp
();
}
else
{
return
null
;
}
}
return
null
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"风控接口调用异常"
,
e
);
return
null
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/LoginController.java
浏览文件 @
6972ad6d
...
...
@@ -216,12 +216,11 @@ public class LoginController extends AccountBaseController {
@ApiOperation
(
value
=
"苹果授权登录"
)
@GetMapping
(
"/login/apple"
)
public
PicaResponse
appleAuth
(
HttpServletRequest
req
)
throws
Exception
{
//@RequestBody EncryptEntity entity
BaseRequest
request
=
new
BaseRequest
();
//CryptoUtil.decrypt(entity, BaseRequest.class);
//request.setProductType(super.getProductType());
//request.setSourceType(super.getSourceType());
return
PicaResponse
.
toResponse
(
loginService
.
loginByApple
(
req
,
request
));
public
PicaResponse
appleAuth
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
request
.
setProductType
(
super
.
getProductType
());
request
.
setSourceType
(
super
.
getSourceType
());
return
PicaResponse
.
toResponse
(
loginService
.
loginByApple
(
request
));
}
@ApiOperation
(
value
=
"苹果登录绑定手机号"
)
...
...
server/src/main/java/com/pica/cloud/account/account/server/req/BaseRequest.java
浏览文件 @
6972ad6d
...
...
@@ -36,6 +36,8 @@ public class BaseRequest {
private
String
captchaAnswer
;
@ApiModelProperty
(
"业务类型,1-新老业务区分标识,2-手机号格式校验业务,3-密码登录校验业务"
)
private
Integer
bizType
;
@ApiModelProperty
(
"设备id"
)
private
String
device_token
;
@ApiModelProperty
(
"苹果身份token"
)
private
String
identifyToken
;
@ApiModelProperty
(
"苹果用户id"
)
...
...
@@ -196,4 +198,12 @@ public class BaseRequest {
public
void
setInfo
(
String
info
)
{
this
.
info
=
info
;
}
public
String
getDevice_token
()
{
return
device_token
;
}
public
void
setDevice_token
(
String
device_token
)
{
this
.
device_token
=
device_token
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/service/LoginService.java
浏览文件 @
6972ad6d
...
...
@@ -76,7 +76,7 @@ public interface LoginService {
* @Params [baseRequest]
* @Return com.pica.cloud.account.account.server.entity.LoginResult
*/
LoginResult
loginByApple
(
HttpServletRequest
req
,
BaseRequest
baseRequest
);
LoginResult
loginByApple
(
BaseRequest
baseRequest
);
/**
* @Description 苹果登录绑定手机号
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/LoginServiceImpl.java
浏览文件 @
6972ad6d
此差异已折叠。
点击以展开。
server/src/main/java/com/pica/cloud/account/account/server/util/IPUtil.java
0 → 100644
浏览文件 @
6972ad6d
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Enumeration
;
public
class
IPUtil
{
/**
* @Description 获取请求的外网ip
* @Author Chongwen.jiang
* @Date 2020/2/25 9:34
* @ModifyDate 2020/2/25 9:34
* @Params [request]
* @Return java.lang.String
*/
public
static
String
getIpAdrress
(
HttpServletRequest
request
)
{
String
ip
=
null
;
//X-Forwarded-For:Squid 服务代理
String
ipAddresses
=
request
.
getHeader
(
"X-Forwarded-For"
);
Enumeration
<
String
>
headerNames
=
request
.
getHeaderNames
();
while
(
headerNames
.
hasMoreElements
())
{
//打印所有头信息
String
s
=
headerNames
.
nextElement
();
String
header
=
request
.
getHeader
(
s
);
// System.out.println(s+"::::"+header);
}
// System.out.println("headerNames:"+ JSON.toJSONString(headerNames));
// System.out.println("RemoteHost:"+request.getRemoteHost());
// System.out.println("RemoteAddr:"+request.getRemoteAddr());
String
unknown
=
"unknown"
;
if
(
ipAddresses
==
null
||
ipAddresses
.
length
()
==
0
||
unknown
.
equalsIgnoreCase
(
ipAddresses
))
{
//Proxy-Client-IP:apache 服务代理
ipAddresses
=
request
.
getHeader
(
"Proxy-Client-IP"
);
}
if
(
ipAddresses
==
null
||
ipAddresses
.
length
()
==
0
||
unknown
.
equalsIgnoreCase
(
ipAddresses
))
{
//WL-Proxy-Client-IP:weblogic 服务代理
ipAddresses
=
request
.
getHeader
(
"WL-Proxy-Client-IP"
);
}
if
(
ipAddresses
==
null
||
ipAddresses
.
length
()
==
0
||
unknown
.
equalsIgnoreCase
(
ipAddresses
))
{
//HTTP_CLIENT_IP:有些代理服务器
ipAddresses
=
request
.
getHeader
(
"HTTP_CLIENT_IP"
);
}
if
(
ipAddresses
==
null
||
ipAddresses
.
length
()
==
0
||
unknown
.
equalsIgnoreCase
(
ipAddresses
))
{
//X-Real-IP:nginx服务代理
ipAddresses
=
request
.
getHeader
(
"X-Real-IP"
);
}
//有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP
if
(
ipAddresses
!=
null
&&
ipAddresses
.
length
()
!=
0
)
{
ip
=
ipAddresses
.
split
(
","
)[
0
];
}
//还是不能获取到,最后再通过request.getRemoteAddr();获取
if
(
ip
==
null
||
ip
.
length
()
==
0
||
unknown
.
equalsIgnoreCase
(
ipAddresses
))
{
ip
=
request
.
getRemoteAddr
();
}
if
(
"0:0:0:0:0:0:0:1"
.
equalsIgnoreCase
(
ip
)){
ip
=
"127.0.0.1"
;
}
return
ip
;
}
}
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录