Flask令牌生成
问题描述:
生成令牌时出现问题,当我点击'/ api/token'时,它的返回方法是不允许的。任何人都可以帮助我....在此先感谢Flask令牌生成
-------------------- app.py ------------ --------
@app.route('/api/token')
@basicAuth.login_required
def get_auth_token():
token = g.user.generate_auth_token(600)
return jsonify({ 'token': token.decode('ascii') })
----------- -------------- models.py
class User(db.Model, UserMixin, Base):
__tablename__ = 'user'
id = db.Column(db.Integer, Sequence('user_id_seq'), primary_key=True)
first_name = db.Column(db.String())
last_name = db.Column(db.String())
email = db.Column(db.String())
password = db.Column(db.String())
profile_picture = db.Column(db.String())
authenticated = db.Column(db.Boolean, default=False)
def generate_auth_token(self, expiration = 600):
s = Serializer(app.config['SECRET_KEY'], expires_in = expiration)
return s.dumps({ 'id': user_id })
def __repr__(self):
return "%s - %s" % (self.id, self.email)
@staticmethod
def verify_auth_token(token):
s = Serializer(app.config['SECRET_KEY'])
try:
data = s.loads(token)
except SignatureExpired:
return 'Token Expired'
except BadSignature:
return 'Bad Token'
user = User.query.get(data['id'])
return user
答
在定义路由时,您需要设置任何您想使用的HTTP方法。例如,接受GET
和POST
方法,你会怎么做:
@app.route('/api/token', methods=['GET', 'POST'])
烧瓶文件说:
默认情况下,路由只回答GET请求,但可以通过改变为route()装饰器提供方法参数。
来源:http://flask.pocoo.org/docs/0.12/quickstart/#http-methods
感谢您的建议。我试过了,但是它返回未经授权的访问。 –
您是否在您的请求中传递了基本身份验证凭据? –
谢谢克里斯托弗我解决了这个问题。 –