python tornado对接权限中心的sdk封装
# -*- coding: utf-8 -*- import json import requests import logging as logger from python.akskapp.scripts.api.baseHandler import R class AuthSdk(object): # 登录 def loginToAuthcenter(self, username, password): resp = None headers = {"Content-Type": "application/json"} data = {"username": username,"password": password} try: resp = requests.post("http://localhost:5666/login", data=json.dumps(data), headers=headers) print(json.loads(resp.content)) except Exception as e: logger.error(e) return resp # def logout(self): # host = options.conf.authcenter # 是否已经登录 def isLogin(self, sessionid, verification): headers = {"session_id": sessionid, "verification": verification} resp = requests.post("http://localhost:5666/islogin", cookies=headers) content = json.loads(str(resp.content, encoding="utf-8")) if resp.status_code == 200 and content is not None and content != {}: # print(content) return True, content # print(resp.content) return False, resp.content def needPermission(permissionstr): def decorator(func): def hasPermission(self,*args, **kw): sessionid = self.get_cookie("session_id") verification = self.get_cookie("verification") # print(sessionid) # print(verification) islogin, content = AuthSdk().isLogin(sessionid, verification) permissionList = [] if islogin: permissionList = content["permissions"] else: self.set_status(401) self.write(R().errorCodeMsg(401, "认证不通过,请确认是否登录")) return # print('%s %s %s():' % (self, permissionstr, func.__name__)) if permissionstr not in permissionList: self.set_status(403) self.write(R().errorCodeMsg(403, "没有访问权限")) return else: return func(self, *args, **kw) return hasPermission return decorator if __name__ == '__main__': asdk = AuthSdk() boolres, content = asdk.isLogin('NzViYWU2M2JmNDRiOGQ5ZTMwZWFmN2Q2ZDRiYzI3NzRjNWIzYzE0ZWE5MjM1NDQwMzI2ODBkNTI4Mjg4Nzk5Yg==|1555926739|6a69c6cbf0384f6c26d42384ca046b5c9495a201','NjQxNDY4Yzk0MGYzYjUxOTJiNmFiODMzMjZiMjZjZDQ1Yzk4OGUxMzg3OGU0Y2RkNTJkMDBlYWQwYTFjMWEzMg==|1555926739|f4ed1b4254bbe38dd604e7199c11a532b8240228') # print(boolres) # asdk.loginToAuthcenter("admin", "123456")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架