Преглед на файлове

新增认证对象简化权限验证

RuoYi преди 4 години
родител
ревизия
d0a5c25b5d

+ 1 - 0
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java

@@ -14,6 +14,7 @@ import com.ruoyi.system.api.model.LoginUser;
14 14
 
15 15
 /**
16 16
  * 自定义请求头拦截器,将Header数据封装到线程变量中方便获取
17
+ * 注意:此拦截器会同时验证当前用户有效期自动刷新有效期
17 18
  *
18 19
  * @author ruoyi
19 20
  */

+ 1 - 1
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java

@@ -59,7 +59,7 @@ public class AuthFilter implements GlobalFilter, Ordered
59 59
         Claims claims = JwtUtils.parseToken(token);
60 60
         if (claims == null)
61 61
         {
62
-            return unauthorizedResponse(exchange, "token已过期或验证不正确!");
62
+            return unauthorizedResponse(exchange, "令牌已过期或验证不正确!");
63 63
         }
64 64
         String userkey = JwtUtils.getUserKey(claims);
65 65
         boolean islogin = redisService.hasKey(getTokenKey(userkey));

+ 60 - 0
ruoyi-ui/src/plugins/auth.js

@@ -0,0 +1,60 @@
1
+import store from '@/store'
2
+
3
+function authPermission(permission) {
4
+  const all_permission = "*:*:*";
5
+  const permissions = store.getters && store.getters.permissions
6
+  if (permission && permission.length > 0) {
7
+    return permissions.some(v => {
8
+      return all_permission === v || v === permission
9
+    })
10
+  } else {
11
+    return false
12
+  }
13
+}
14
+
15
+function authRole(role) {
16
+  const super_admin = "admin";
17
+  const roles = store.getters && store.getters.roles
18
+  if (role && role.length > 0) {
19
+    return roles.some(v => {
20
+      return super_admin === v || v === role
21
+    })
22
+  } else {
23
+    return false
24
+  }
25
+}
26
+
27
+export default {
28
+  // 验证用户是否具备某权限
29
+  hasPermi(permission) {
30
+    return authPermission(permission);
31
+  },
32
+  // 验证用户是否含有指定权限,只需包含其中一个
33
+  hasPermiOr(permissions) {
34
+    return permissions.some(item => {
35
+      return authPermission(item)
36
+    })
37
+  },
38
+  // 验证用户是否含有指定权限,必须全部拥有
39
+  hasPermiAnd(permissions) {
40
+    return permissions.every(item => {
41
+      return authPermission(item)
42
+    })
43
+  },
44
+  // 验证用户是否具备某角色
45
+  hasRole(role) {
46
+    return authRole(role);
47
+  },
48
+  // 验证用户是否含有指定角色,只需包含其中一个
49
+  hasRoleOr(roles) {
50
+    return roles.some(item => {
51
+      return authRole(item)
52
+    })
53
+  },
54
+  // 验证用户是否含有指定角色,必须全部拥有
55
+  hasRoleAnd(roles) {
56
+    return roles.every(item => {
57
+      return authRole(item)
58
+    })
59
+  }
60
+}

+ 3 - 0
ruoyi-ui/src/plugins/index.js

@@ -1,9 +1,12 @@
1
+import auth from './auth'
1 2
 import cache from './cache'
2 3
 import modal from './modal'
3 4
 import download from './download'
4 5
 
5 6
 export default {
6 7
   install(Vue) {
8
+    // 认证对象
9
+    Vue.prototype.$auth = auth
7 10
     // 缓存对象
8 11
     Vue.prototype.$cache = cache
9 12
     // 模态框对象