Compare commits

..

No commits in common. "7fd71ca8aa3cffe4e05e30ed42f23112fae29bc9" and "70c329a5ccb5455309c4839d68f09ed49550d13f" have entirely different histories.

14 changed files with 24 additions and 153 deletions

View File

@ -19,6 +19,4 @@ public interface ISmsBaseService {
* @return
*/
String getVerifyCode(String phone);
void checkVerifyCode(String phone, String code);
}

View File

@ -23,28 +23,4 @@ public class FolderUtil {
}
folder.mkdirs();
}
/**
* 删除文件
*
* @param path
*/
public static void delete(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
if (file.isFile()) {
file.delete();
return;
}
File[] subFiles = file.listFiles();
if (subFiles != null) {
for (File subFile : subFiles) {
delete(subFile.getAbsolutePath());
}
}
file.delete();
}
}

View File

@ -120,7 +120,7 @@ public class WStringUtil {
* @date 2018年2月28日 下午4:28:45
*/
public static String lowerUpper2UnderLine(String str) {
return lowerUpper2Separator(str, "_");
return lowerUpper2Separator(str, "-");
}
/**

View File

@ -77,11 +77,6 @@
<artifactId>spring-security-web</artifactId>
</dependency>
<!-- spring end -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.2.1</version>
</dependency>
</dependencies>

View File

@ -104,7 +104,7 @@ public class ResponseAdvice {
}
String contentType = request.getContentType();
String requestURI = request.getRequestURI();
if ((requestURI.contains("/api/") || requestURI.contains("/app/")) || (contentType != null && contentType.contains(MediaType.APPLICATION_JSON_VALUE))) {
if ((requestURI.contains("/app/")) || (contentType != null && contentType.contains(MediaType.APPLICATION_JSON_VALUE))) {
response.setCharacterEncoding(ISystemConstant.CHARSET_UTF8);
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
response.setStatus(HttpStatus.BAD_REQUEST.value());

View File

@ -74,14 +74,6 @@ public class EnvManager {
return value;
}
public String getValue(String key, String defaultValue) {
String value = getValue(key);
if (StringUtils.isBlank(value)) {
return defaultValue;
}
return value;
}
public static String value(String key) {
String value = getInstance().getValue(key);
if (StringUtils.isBlank(value)) {
@ -90,10 +82,6 @@ public class EnvManager {
return value;
}
public static String value(String key, String defaultValue) {
return getInstance().getValue(key, defaultValue);
}
public void setEnvDao(IEnvDao envDao) {
this.envDao = envDao;
}

View File

@ -9,7 +9,6 @@ import ink.wgink.interfaces.sms.ISmsBaseService;
import ink.wgink.login.app.pojo.vos.appsign.AppLoginDefaultVO;
import ink.wgink.login.app.pojo.vos.appsign.AppLoginPhoneVO;
import ink.wgink.login.app.service.appsign.IAppSignService;
import ink.wgink.login.base.exceptions.UserAuthenticationException;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResultData;
import ink.wgink.util.RegexUtil;
@ -63,7 +62,13 @@ public class AppSignAppController extends DefaultBaseController {
if (!RegexUtil.isPhone(appLoginPhoneVO.getUsername())) {
throw new ParamsException("用户名非手机格式");
}
smsBaseService.checkVerifyCode(appLoginPhoneVO.getUsername(), appLoginPhoneVO.getVerificationCode());
String verifyCode = smsBaseService.getVerifyCode(appLoginPhoneVO.getUsername());
if (StringUtils.isBlank(verifyCode)) {
throw new ParamsException("未发送验证码");
}
if (!StringUtils.equalsIgnoreCase(verifyCode, appLoginPhoneVO.getVerificationCode())) {
throw new ParamsException("验证码错误");
}
return new SuccessResultData<>(appSignService.phoneSign(appLoginPhoneVO));
}

View File

@ -219,7 +219,6 @@ public class UserLoginService {
private void updateLoginInfo(String userId, String address, String currentTime) throws UpdateException {
Map<String, Object> params = new HashMap<>(10);
params.put("userId", userId);
params.put("userState", 0);
params.put("lastLoginAddress", address);
params.put("lastLoginTime", currentTime);
params.put("gmtModified", currentTime);

View File

@ -5,8 +5,6 @@ import ink.wgink.exceptions.SearchException;
import ink.wgink.login.oauth2.client.auth.UserTokenManager;
import ink.wgink.login.oauth2.client.auth.manager.UserToken;
import ink.wgink.pojo.bos.UserInfoBO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
@ -28,9 +26,9 @@ import java.io.IOException;
@Order(value = Ordered.HIGHEST_PRECEDENCE)
@Component
@WebFilter(filterName = "UserTokenFilter", urlPatterns = "/*")
@WebFilter(filterName = "ContentCachingFilter", urlPatterns = "/*")
public class UserTokenFilter extends OncePerRequestFilter {
private static final Logger LOG = LoggerFactory.getLogger(UserTokenFilter.class);
private static final AntPathMatcher ANT_PATH_MATCHER = new AntPathMatcher();
@Override
@ -39,7 +37,7 @@ public class UserTokenFilter extends OncePerRequestFilter {
String source = request.getHeader("X-SOURCE");
if (StringUtils.isBlank(userId)) {
Object springSecurityContext = request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
if (!StringUtils.equals(source, "page")) {
if(!StringUtils.equals(source, "page")) {
filterChain.doFilter(request, response);
return;
}
@ -54,9 +52,7 @@ public class UserTokenFilter extends OncePerRequestFilter {
UserTokenManager userTokenManager = UserTokenManager.getInstance();
UserToken userToken = userTokenManager.get(userId);
if (userToken == null) {
LOG.error("用户未登录userId异常");
response.setStatus(HttpStatus.UNAUTHORIZED.value());
return;
throw new SearchException("用户未登录userId异常");
}
UserInfoBO userInfo = userToken.getUserInfo();
userTokenManager.refresh(userInfo, userToken.getGrantedAuthorities());

View File

@ -1,81 +0,0 @@
package ink.wgink.module.oauth2.filter;
import ink.wgink.exceptions.SearchException;
import ink.wgink.pojo.bos.RoleGrantedAuthorityBO;
import ink.wgink.pojo.bos.UserInfoBO;
import org.jsoup.internal.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextHolderStrategy;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@Order(value = Ordered.HIGHEST_PRECEDENCE)
@Component
@WebFilter(filterName = "AccessTokenFilter", urlPatterns = "/*")
public class AccessTokenFilter extends OncePerRequestFilter {
private static final Logger LOG = LoggerFactory.getLogger(AccessTokenFilter.class);
@Autowired(required = false)
private IAccessTokenCheckFilter accessTokenCheckFilter;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (accessTokenCheckFilter == null) {
filterChain.doFilter(request, response);
return;
}
String authorization = request.getHeader("Auth");
if (StringUtil.isBlank(authorization)) {
filterChain.doFilter(request, response);
return;
}
if (!authorization.startsWith("Bearer ")) {
LOG.error("用户未登录authorization异常");
response.setStatus(HttpStatus.UNAUTHORIZED.value());
}
String accessToken = authorization.replace("Bearer ", "");
UserInfoBO userInfo = accessTokenCheckFilter.getUserInfo(accessToken);
Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
userInfo.getRoles().forEach(role -> {
RoleGrantedAuthorityBO roleGrantedAuthorityBO = new RoleGrantedAuthorityBO(role.getRoleId(), role.getRoleName(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
grantedAuthorities.add(roleGrantedAuthorityBO);
});
UsernamePasswordAuthenticationToken userAuthenticationTokenResult = new UsernamePasswordAuthenticationToken(userInfo, null, grantedAuthorities);
SecurityContextHolderStrategy securityContextHolderStrategy = SecurityContextHolder.getContextHolderStrategy();
SecurityContext context = securityContextHolderStrategy.createEmptyContext();
context.setAuthentication(userAuthenticationTokenResult);
securityContextHolderStrategy.setContext(context);
request.getSession().setAttribute("SPRING_SECURITY_CONTEXT", context);
filterChain.doFilter(request, response);
}
/**
* AccessToken校验过滤器
*/
public interface IAccessTokenCheckFilter {
UserInfoBO getUserInfo(String accessToken);
}
}

View File

@ -274,11 +274,6 @@ public class SmsServiceImpl extends DefaultBaseService implements ISmsService {
return VerifyCodeManager.getInstance().getVerifyCode(phone);
}
@Override
public void checkVerifyCode(String phone, String code) {
VerifyCodeManager.getInstance().checkVerifyCode(phone, code);
}
/**
* 设置用户
*

View File

@ -13,7 +13,6 @@ import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* @ClassName: RedisFilesShowCodeServiceImpl
@ -37,15 +36,12 @@ public class RedisFilesShowCodeService implements IFilesShowCodeService {
@Override
public void clearTimeoutShowCode() {
Set<String> keySet = redisTemplate.keys(FILE_SHOW_CODE_KEY + "**");
Set<String> keySet = redisTemplate.keys(FILE_SHOW_CODE_KEY);
long currentTimeMillis = System.currentTimeMillis();
Set<String> clearKeys = new HashSet<>(16);
long clearTimeoutShowCodeCount = 0;
for (String key : keySet) {
FilesShowCode showCode = (FilesShowCode) redisTemplate.opsForValue().get(key);
if (showCode == null) {
continue;
}
FilesShowCode showCode = getShowCode(key);
if (currentTimeMillis - showCode.getLatestUpdateTime() > SHOW_CODE_TIMEOUT_MILLIS) {
clearKeys.add(FILE_SHOW_CODE_KEY + showCode.getFileId());
}
@ -70,7 +66,8 @@ public class RedisFilesShowCodeService implements IFilesShowCodeService {
public synchronized FilesShowCode getShowCode(String fileId) {
FilesShowCode showCode = (FilesShowCode) redisTemplate.opsForValue().get(FILE_SHOW_CODE_KEY + fileId);
if (showCode != null) {
redisTemplate.opsForValue().set(FILE_SHOW_CODE_KEY + fileId, showCode, 1, TimeUnit.MINUTES);
showCode.setLatestUpdateTime(System.currentTimeMillis());
redisTemplate.opsForValue().set(FILE_SHOW_CODE_KEY + fileId, showCode);
}
return showCode;
}

View File

@ -185,7 +185,13 @@ public class UserAppController extends DefaultBaseController {
if (updatePhonePasswordVO.getNewPassword().length() < 6) {
throw new ParamsException("新密码长度必须大于6位");
}
smsBaseService.checkVerifyCode(updatePhonePasswordVO.getPhone(), updatePhonePasswordVO.getVerificationCode());
String verifyCode = smsBaseService.getVerifyCode(updatePhonePasswordVO.getPhone());
if (StringUtils.isBlank(verifyCode)) {
throw new ParamsException("验证码为空");
}
if (!StringUtils.equalsIgnoreCase(verifyCode, updatePhonePasswordVO.getVerificationCode())) {
throw new ParamsException("验证码错误");
}
userService.updatePasswordByUsername(updatePhonePasswordVO.getPhone(), updatePhonePasswordVO.getNewPassword());
return new SuccessResult();
}

View File

@ -230,9 +230,6 @@
UPDATE
sys_user
SET
<if test="userState != null">
user_state = #{userState},
</if>
<if test="userLongitude != null and userLongitude != ''">
user_longitude = #{userLongitude},
</if>