修复失效头像地址返回问题
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
package com.ruoyi.web.controller.system;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.InvalidPathException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -7,6 +11,7 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.cms.domain.IDCardInfo;
|
||||
import com.ruoyi.cms.service.impl.AppUserServiceImpl;
|
||||
import com.ruoyi.cms.util.StringUtil;
|
||||
import com.ruoyi.common.config.RuoYiConfig;
|
||||
import com.ruoyi.common.core.domain.entity.AppUser;
|
||||
import com.ruoyi.common.core.domain.entity.tymh.wwToken.WwTokenResult;
|
||||
import com.ruoyi.common.core.domain.entity.tymh.wwToken.WwUserLogin;
|
||||
@@ -166,6 +171,7 @@ public class SysLoginController
|
||||
public AjaxResult getInfo()
|
||||
{
|
||||
SysUser user = SecurityUtils.getLoginUser().getUser();
|
||||
normalizeMissingLocalAvatar(user);
|
||||
// 角色集合
|
||||
Set<String> roles = permissionService.getRolePermission(user);
|
||||
// 权限集合
|
||||
@@ -189,6 +195,41 @@ public class SysLoginController
|
||||
return ajax;
|
||||
}
|
||||
|
||||
/**
|
||||
* 本地头像文件被清理后,不能把已失效的静态地址继续交给浏览器。
|
||||
* 外部 HTTPS 头像不在本方法处理范围内,避免改变第三方资源语义。
|
||||
*/
|
||||
private void normalizeMissingLocalAvatar(SysUser user)
|
||||
{
|
||||
if (user == null || StringUtils.isEmpty(user.getAvatar())
|
||||
|| !user.getAvatar().startsWith(Constants.RESOURCE_PREFIX + "/"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String profile = RuoYiConfig.getProfile();
|
||||
if (StringUtils.isEmpty(profile))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Path profileRoot = Paths.get(profile).toAbsolutePath().normalize();
|
||||
Path relativeAvatar = Paths.get(user.getAvatar()
|
||||
.substring(Constants.RESOURCE_PREFIX.length() + 1)).normalize();
|
||||
Path avatarFile = profileRoot.resolve(relativeAvatar).normalize();
|
||||
if (!avatarFile.startsWith(profileRoot) || !Files.isRegularFile(avatarFile))
|
||||
{
|
||||
user.setAvatar("");
|
||||
}
|
||||
}
|
||||
catch (InvalidPathException | SecurityException exception)
|
||||
{
|
||||
user.setAvatar("");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由信息
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user