zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    使用C实现一个函数内两个阿拉伯数字的交换
    使用C比较两个字符串是否相等
    C打印99乘法表
    C定时在控制台输出时分秒
    C实现猜数字
    OpenCV实现开操作、闭操作、形态学梯度、顶帽、黑帽
    OpenCV实现膨胀和腐蚀
    metaclass of python
    Django设计哲学
    using NGINX+uWSGI to deploy django project
  • 原文地址:https://www.cnblogs.com/zipon/p/10754866.html
Copyright © 2011-2022 走看看