2017-05-27 142 views
0

生成令牌时出现问题,当我点击'/ 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 

回答

0

在定义路由时,您需要设置任何您想使用的HTTP方法。例如,接受GETPOST方法,你会怎么做:

@app.route('/api/token', methods=['GET', 'POST']) 

烧瓶文件说:

默认情况下,路由只回答GET请求,但可以通过改变为route()装饰器提供方法参数。

来源:http://flask.pocoo.org/docs/0.12/quickstart/#http-methods

+0

感谢您的建议。我试过了,但是它返回未经授权的访问。 –

+0

您是否在您的请求中传递了基本身份验证凭据? –

+0

谢谢克里斯托弗我解决了这个问题。 –