作者 RuoYi

优化Context信息,防止泄漏问题

@@ -251,7 +251,7 @@ public class SysRoleController extends BaseController @@ -251,7 +251,7 @@ public class SysRoleController extends BaseController
251 /** 251 /**
252 * 获取对应角色部门树列表 252 * 获取对应角色部门树列表
253 */ 253 */
254 - @PreAuthorize("@ss.hasPermi('system:role:list')") 254 + @PreAuthorize("@ss.hasPermi('system:role:query')")
255 @GetMapping(value = "/deptTree/{roleId}") 255 @GetMapping(value = "/deptTree/{roleId}")
256 public AjaxResult deptTree(@PathVariable("roleId") Long roleId) 256 public AjaxResult deptTree(@PathVariable("roleId") Long roleId)
257 { 257 {
@@ -260,5 +260,4 @@ public class SysRoleController extends BaseController @@ -260,5 +260,4 @@ public class SysRoleController extends BaseController
260 ajax.put("depts", deptService.selectDeptTreeList(new SysDept())); 260 ajax.put("depts", deptService.selectDeptTreeList(new SysDept()));
261 return ajax; 261 return ajax;
262 } 262 }
263 -  
264 } 263 }
@@ -12,11 +12,6 @@ public class UserConstants @@ -12,11 +12,6 @@ public class UserConstants
12 */ 12 */
13 public static final String SYS_USER = "SYS_USER"; 13 public static final String SYS_USER = "SYS_USER";
14 14
15 - /**  
16 - * ss标记的权限字符  
17 - */  
18 - public static final String SS_PERMISSION = "SS_PERMISSION";  
19 -  
20 /** 正常状态 */ 15 /** 正常状态 */
21 public static final String NORMAL = "0"; 16 public static final String NORMAL = "0";
22 17
1 package com.ruoyi.framework.security.context; 1 package com.ruoyi.framework.security.context;
2 2
  3 +import org.springframework.web.context.request.RequestAttributes;
  4 +import org.springframework.web.context.request.RequestContextHolder;
  5 +import com.ruoyi.common.core.text.Convert;
  6 +
3 /** 7 /**
4 * 权限信息 8 * 权限信息
5 * 9 *
@@ -7,15 +11,17 @@ package com.ruoyi.framework.security.context; @@ -7,15 +11,17 @@ package com.ruoyi.framework.security.context;
7 */ 11 */
8 public class PermissionContextHolder 12 public class PermissionContextHolder
9 { 13 {
10 - private static final ThreadLocal<String> contextHolder = new ThreadLocal<>(); 14 + private static final String PERMISSION_CONTEXT_ATTRIBUTES = "PERMISSION_CONTEXT";
11 15
12 public static void setContext(String permission) 16 public static void setContext(String permission)
13 { 17 {
14 - contextHolder.set(permission); 18 + RequestContextHolder.currentRequestAttributes().setAttribute(PERMISSION_CONTEXT_ATTRIBUTES, permission,
  19 + RequestAttributes.SCOPE_REQUEST);
15 } 20 }
16 21
17 public static String getContext() 22 public static String getContext()
18 { 23 {
19 - return contextHolder.get(); 24 + return Convert.toStr(RequestContextHolder.currentRequestAttributes().getAttribute(PERMISSION_CONTEXT_ATTRIBUTES,
  25 + RequestAttributes.SCOPE_REQUEST));
20 } 26 }
21 } 27 }
@@ -89,6 +89,10 @@ public class SysLoginService @@ -89,6 +89,10 @@ public class SysLoginService
89 throw new ServiceException(e.getMessage()); 89 throw new ServiceException(e.getMessage());
90 } 90 }
91 } 91 }
  92 + finally
  93 + {
  94 + AuthenticationContextHolder.clearContext();
  95 + }
92 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); 96 AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
93 LoginUser loginUser = (LoginUser) authentication.getPrincipal(); 97 LoginUser loginUser = (LoginUser) authentication.getPrincipal();
94 recordLoginInfo(loginUser.getUserId()); 98 recordLoginInfo(loginUser.getUserId());
@@ -118,7 +118,6 @@ @@ -118,7 +118,6 @@
118 where m.status = '0' and rm.role_id = #{roleId} 118 where m.status = '0' and rm.role_id = #{roleId}
119 </select> 119 </select>
120 120
121 -  
122 <select id="selectMenuById" parameterType="Long" resultMap="SysMenuResult"> 121 <select id="selectMenuById" parameterType="Long" resultMap="SysMenuResult">
123 <include refid="selectMenuVo"/> 122 <include refid="selectMenuVo"/>
124 where menu_id = #{menuId} 123 where menu_id = #{menuId}