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")
  • 相关阅读:
    PS 修复画笔
    PS 魔棒工具、仿制图章
    PS选区的应用
    PS界面介绍
    火狐浏览器任务栏设置默认 隐私模式开启
    [CSS] Using inline-grid to gain easy control over gap and size
    [AWS] Presign url for S3
    [CSS] Customer focus / disabled style for select element
    [CSS] Using single grid-template-area and justify-self to select arrow down icon in select
    [CSS 3] Using CSS attribute selector
  • 原文地址:https://www.cnblogs.com/zipon/p/10754866.html
Copyright © 2011-2022 走看看