Skip to content

Commit f1b31ef

Browse files
committed
New user logic becomes synchronized code block.
1 parent 88cbc64 commit f1b31ef

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

server/src/main/java/edp/davinci/core/inteceptor/CurrentUserMethodArgumentResolver.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ public boolean supportsParameter(MethodParameter parameter) {
5757
* 解决方式:
5858
* 新建一张visualis_user表,复用原来的权限逻辑,
5959
* 如果访问Visualis时,使用该注解,没有该用户,即插入用户,录入用户信息。
60+
*
61+
* 多个请求同时访问时,需要两步,查数据库和
6062
*/
6163
@Override
6264
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
@@ -68,17 +70,20 @@ public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer m
6870
String accessUsername = SecurityFilter.getLoginUsername(webRequest.getNativeRequest(HttpServletRequest.class));
6971
log.info("Get request access user name: {}", accessUsername);
7072
User visualisUser = null;
71-
synchronized (this) {
72-
visualisUser = (User) userMapper.selectByUsername(accessUsername);
73-
log.info("Get visualis user from table: {}", visualisUser);
74-
User user = new User();
75-
if (null == visualisUser) {
76-
user.setUsername(accessUsername);
77-
user.setName(accessUsername);
78-
user.setPassword(null);
79-
log.info("Insert into visualis user: {}", user);
80-
userMapper.insert(user);
81-
return user;
73+
visualisUser = (User) userMapper.selectByUsername(accessUsername);
74+
if(null == visualisUser) {
75+
synchronized (this) {
76+
visualisUser = (User) userMapper.selectByUsername(accessUsername);
77+
log.info("Get visualis user from table: {}", visualisUser);
78+
User user = new User();
79+
if (null == visualisUser) {
80+
user.setUsername(accessUsername);
81+
user.setName(accessUsername);
82+
user.setPassword(null);
83+
log.info("Insert into visualis user: {}", user);
84+
userMapper.insert(user);
85+
return user;
86+
}
8287
}
8388
}
8489
return visualisUser;

0 commit comments

Comments
 (0)