最近在弄 flask 简单的权限管理,想到一种实现方式:
利用 url_map 把所有的连接路径导出
Map([<Rule '/topics/create' (GET, OPTIONS, HEAD, POST) -> topics.cre
<Rule '/topics/latest' (GET, OPTIONS, HEAD) -> topics.latest>,
<Rule '/users/setting' (GET, OPTIONS, HEAD, POST) -> users.setting>
<Rule '/auth/signout' (GET, OPTIONS, HEAD) -> auth.signout>,
<Rule '/auth/signin' (GET, OPTIONS, HEAD, POST) -> auth.signin>,
<Rule '/auth/signup' (GET, OPTIONS, HEAD, POST) -> auth.signup>,
<Rule '/auth/reset' (GET, OPTIONS, HEAD, POST) -> auth.reset>,
<Rule '/auth/find' (GET, OPTIONS, HEAD, POST) -> auth.find>,
<Rule '/topics/' (GET, OPTIONS, HEAD) -> topics.index>,
<Rule '/' (GET, OPTIONS, HEAD) -> frontend.index>,
<Rule '/topics/<id>/reply' (OPTIONS, POST) -> topics.reply>,
<Rule '/topics/<id>' (GET, OPTIONS, HEAD) -> topics.topic>,
<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>,
<Rule '/users/<username>' (GET, OPTIONS, HEAD) -> users.index>])
然后在 flask 里面添加权限控制页面将每个路径授权给用户。 具体方式为:数据库用户表增加一列,把允许的内容存为字典或者 json 串。每次请求时候比对路径是否在字典里面如果在就允许访问。 扩展开来,类似传参和 get、post 不同的访问也可以很方便的判断。 具体 url_map 使用参考这里: https://segmentfault.com/q/1010000000698148
但是现在有个问题是当启用了 blueprint 后,url_map 居然无法直接显示,大家有啥办法没?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.