zoukankan      html  css  js  c++  java
  • 一个验证登录的程序:python编写flask架构restful风格--2017年4月6日

    一个验证登录的程序

    摘抄自:极客学院-Python RESTful API开发工具介绍及应用   http://www.jikexueyuan.com/course/623.html

    import base64
    import time
    import random
    
    from flask import Flask,request
    
    app = Flask(__name__)
    
    users = {
        "magigo": ["123456"]
    }
    
    def gen_token(uid):
        token = base64.b64encode(':'.join([str(uid),str(random.random()),str(time.time()+7200)]))
        users[uid].append(token)
        return token
    
    def verify_token(token):
    #    print token
        _token = base64.b64decode(token)
    #    print users.get(_token.split(':')[0])[-1]
        if not users.get(_token.split(':')[0])[-1] == token:
            return -1
        if float(_token.split(':')[-1]) >= time.time():
            return 1
        else:
            return 0
    
    
    @app.route('/index', methods=['POST','GET'])
    def hello_world():
        print request.headers
        return 'Hello World'
    
    @app.route('/login',methods=['POST','GET'])
    def login():
        uid, pw = base64.b64decode(request.headers['Authorization'].split(' ')[-1]).split(':')
        if users.get(uid)[0] == pw:
            return gen_token(uid)
        else:
            return 'error'
    
    @app.route('/test',methods=['POST','GET'])
    def test():
        token = request.args.get('token')
        if verify_token(token) == 1:
            return 'data'
        else:
            return 'error'
    
    if __name__=='__main__':
        app.run(debug=True)
    import requests
    
    r = requests.get('http://127.0.0.1:5000/login',auth=('magigo','123456'))
    print r.text 
    
    
    token = 'bWFnaWdvOjAuOTMxODYzMDIyNjA0OjE0OTE0Nzk3ODkuMDc='
    r = requests.get('http://127.0.0.1:5000/test',params={'token':token})
    print r.text
  • 相关阅读:
    Android ADB 基本命令
    Android Studio修改包名
    Android开发之SurfaceView
    Android呼吸灯效果实现
    Android xml 绘制图形
    设计模式--代理模式C++实现
    设计模式--建造者模式C++实现
    设计模式--模板方法模式C++实现
    设计模式--抽象工厂模式C++实现
    设计模式---工厂方法C++实现
  • 原文地址:https://www.cnblogs.com/jingbostar/p/6674864.html
Copyright © 2011-2022 走看看