|
20 | 20 | from backend.core.encrypt.handlers import AsymmetricHandler
|
21 | 21 | from backend.db_proxy.constants import DB_CLOUD_TOKEN_EXPIRE_TIME
|
22 | 22 | from backend.utils.local import local
|
23 |
| -from backend.utils.redis import check_set_member_in_redis |
| 23 | +from backend.utils.redis import RedisConn |
24 | 24 |
|
25 | 25 |
|
26 | 26 | class ProxyPassPermission(permissions.BasePermission):
|
@@ -54,7 +54,16 @@ def has_permission(self, request, view):
|
54 | 54 | cache_key = f"cache_db_cloud_token_{bk_cloud_id}"
|
55 | 55 | # 判断是否在缓存集合中,不在cache中则走解密流程并cache。
|
56 | 56 | # 由于Redis的list不能直接判断元素是否存在,所以选择set存取
|
57 |
| - check_set_member_in_redis(cache_key, db_cloud_token, self.verify_token, DB_CLOUD_TOKEN_EXPIRE_TIME) |
| 57 | + # check_set_member_in_redis(cache_key, db_cloud_token, self.verify_token, DB_CLOUD_TOKEN_EXPIRE_TIME) |
| 58 | + if not RedisConn.sismember(cache_key, db_cloud_token): |
| 59 | + self.verify_token(db_cloud_token, bk_cloud_id) |
| 60 | + # 如果这个cache_key刚创建,则需要设置过期时间 |
| 61 | + if not RedisConn.exists(cache_key): |
| 62 | + RedisConn.sadd(cache_key, db_cloud_token) |
| 63 | + RedisConn.expire(cache_key, DB_CLOUD_TOKEN_EXPIRE_TIME) |
| 64 | + else: |
| 65 | + RedisConn.sadd(cache_key, db_cloud_token) |
| 66 | + |
58 | 67 | request.data.pop("db_cloud_token")
|
59 | 68 |
|
60 | 69 | # 通过鉴权后,修改调用方式为内部调用
|
|
0 commit comments