使用python Falcon路由



我是Falcon框架python的新手。我有一个关于猎鹰中间件类使用的问题。在中间件中使用自定义路由器和请求身份验证是否明智,还是应该仅在路由上处理

**main.py**
import falcon
import falcon_jsonify
import root
from waitress import serve
if __name__ == "__main__":
    app = falcon.API(
        middleware=[falcon_jsonify.Middleware(help_messages=True),
        root.customRequestParser()]
    )
    serve(app, host="0.0.0.0", port=5555)

root.py我计划编写自定义路由的位置

import json
import falcon
class Home(object):
    @classmethod
    def getResponse(self):
        return {"someValue": "someOtherValue"}
def process_request_path(path):
    path = path.lstrip("/").split("/")
    return path
class customRequestParser(object):
    def process_request(self, req, resp):
        print process_request_path(req.path)

我还看到了使用 app = falcon.API(router=CustomRouter()) 的示例。我在猎鹰官方文档页面上看到了一个文档 - http://falcon.readthedocs.io/en/stable/api/routing.html

如果有任何我可以查看的参考资料,请告诉我。

引用

猎鹰社区常见问题

解答

如何对请求进行身份验证?

钩子和中间件组件可以一起使用来对请求进行身份验证和授权。例如,中间件组件可用于解析传入的凭据并将结果放在req.context中。然后,下游组件或挂钩可以使用此信息来授权请求,同时考虑用户的角色和请求的资源。

猎鹰钩子是用于特定请求函数(即 on_get (或整个班级。它们非常适合验证传入的请求,因此正如常见问题解答所述,此时可以完成身份验证。

这是我敲出的一个(未经测试的(示例:

def AuthParsingMiddleware(object):
    def process_request(self, req, resp):
        req.context['GodMode'] = req.headers.get('Auth-Token') == 'GodToken':
    # Might need process_resource & process_response     
def validate_god_mode(req, resp, resource, params):
    if not req.context['GodMode']:
        raise falcon.HTTPBadRequest('Not authorized', 'You are not god')

def GodLikeResource(object):
    @falcon.before(validate_god_mode):
    def on_get(self, req, resp):
        resp.body = 'You have god mode; I prostrate myself'

app = falcon.API(
    middleware=[falcon_jsonify.Middleware(help_messages=True),
                AuthParsingMiddleware()]
)
app.add_route('/godlikeresource', GodLikeResource())

或者更好...

有一个猎鹰身份验证包。

相关内容

  • 没有找到相关文章

最新更新