<p>这是烧瓶授权的一个工作示例。在</p>
<pre><code>from functools import wraps
from flask import Flask,Response,request, abort
app = Flask(__name__)
def check_auth(name,passw):
return (name=='admin' and passw=='pass')
def requires_auth(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.authorization
if not auth or not check_auth(auth.username, auth.password):
abort(401)
return f(*args, **kwargs)
return decorated
@app.route('/')
@requires_auth
def hello():
return "Hello World"
if __name__ == "__main__":
app.run(debug=True)
</code></pre>
<p>我的请求文件:</p>
^{pr2}$
<p>如果在本地主机上运行此程序,则应使用本地主机地址。<br/>
你的<code><abc.com></code>是什么代码。可能吧这就是错误。在</p>
<p><strong>编辑2</strong></p>
<pre><code>from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired
def gen_token(name,passw, expiration=None):
s = Serializer(app.config['SECRET_KEY'], expires_in = expiration)
return s.dumps(name, passw)
def verify_token(token):
serial = Serializer(app.config['SECRET_KEY'])
try:
data = serial.loads(token)
except BadSignature:
return "Error"
except SignatureExpired:
return "Error"
name = data[0]
passw = data[1]
return name,passw
</code></pre>
<p>以下是一些方法,可以帮助您开始使用基于令牌的身份验证。在</p>
<p>我所做的是</p>
<ol>
<li>用户通过在Auth头中发送用户名和密码的请求从服务器请求令牌</li>
<li>在检查<code>username</code>和<code>password</code>是否正确之后,可以使用<code>gen_token</code>方法生成令牌。您可以根据需要修改此方法。<a href="http://pythonhosted.org/itsdangerous/" rel="nofollow">Read Here</a></li>
<li>现在,用户将从方法2接收到的令牌发送到Auth头中的<code>username</code>。<code>password</code>可以留空,也可以在该位置发送{<cd7>}。在</li>
<li>当您收到令牌时,您需要使用<code>SECRET_KEY</code>来加载它。可以根据您的要求处理异常。如果令牌有效,您将能够获得发送请求的用户,从而执行您的过程。在</li>
</ol>
<p>希望有帮助!在</p>
<p>查看这个<a href="http://blog.miguelgrinberg.com/post/restful-authentication-with-flask" rel="nofollow">link</a>以获得更详细的解释。在</p>