首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python Falcon路由

用python Falcon路由
EN

Stack Overflow用户
提问于 2017-02-10 02:30:37
回答 1查看 2.5K关注 0票数 1

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

代码语言:javascript
复制
**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,我计划在那里编写自定义路由

代码语言:javascript
复制
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上看到了一个文档。

如果有什么参考资料我可以查一查,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 09:11:12

引用隼社区常见问题

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

Falcon的钩子是用于特定请求函数(即on_get)或整个类的装饰器。它们很适合验证传入的请求,因此正如FAQ所述,此时可以进行身份验证。

下面是我提出的一个(未经测试的)示例:

代码语言:javascript
复制
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())

或者更好..。

有一个falcon-auth软件包

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42150519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档