【问题标题】:Flask-restful app fails when authentication is enabled启用身份验证后,Flask-restful 应用程序失败
【发布时间】:2017-02-11 13:33:51
【问题描述】:

每当我尝试使用 flask_httpauth 为我的 flask_restful 项目启用身份验证时,我都会收到此错误:

AttributeError: 'function' object has no attribute 'as_view'

这是一个非常基本的示例: apicontroller.py:

from flask_restful import Resource, Api
from flasktest import api, app
from flask_httpauth import HTTPTokenAuth

auth = HTTPTokenAuth()

@auth.login_required
class ApiController(Resource):
    def get(self):
        return True

api.add_resource(ApiController, '/api/apicontroller')

初始化.py:

from flask import render_template
from flask import Flask, request, render_template, session, flash, redirect, url_for, jsonify
from flask_restful import Resource, Api, reqparse, fields
from flask_httpauth import HTTPTokenAuth


app = Flask(__name__)

api = Api(app)

import flasktest.apicontroller

每当我用@auth.login_required 装饰控制器类时,它都会因上述错误而失败。我该如何解决这个问题?

【问题讨论】:

    标签: python flask-restful flask-httpauth


    【解决方案1】:

    我相信你不能不将装饰器应用于类。

    解决这个问题:

    from flask_restful import Resource, Api
    from flasktest import api, app
    
    from flask_httpauth import HTTPTokenAuth
    
    auth = HTTPTokenAuth()
    
    class ApiController(Resource):
        decorators = [auth.login_required]
    
        def get(self):
            return True
    
    api.add_resource(ApiController, '/api/apicontroller')
    

    【讨论】:

    • 太棒了!你摇滚!
    • @Trondh 你也可以只用你的装饰器包装get() 函数,但我不确定。干杯!
    猜你喜欢
    • 2014-10-22
    • 2023-03-22
    • 2022-12-11
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多