用 django 架设了一个简单的服务器,主要从本地文件抓数,然后显示出来。
在网上找了一下,django 的权限体系是基于 model 的。但我这个服务不存在 model。
我想简单地根据 url 来设置权限,比如用户组 a 可以访问 /a,用户组 b 只能访问 /b。有比较方便的方法吗?
1
tinypig 2017-12-01 19:46:59 +08:00
在 View 里检查权限。
|
2
okletswin 2017-12-01 19:49:51 +08:00
view 级别处理,自己写装饰器,取出当前 request 的 user 和 url,拒绝或通过。
|
3
heww 2017-12-01 20:50:14 +08:00 via iPhone
用 middleware
|
4
Eds1995 2017-12-01 21:28:38 +08:00 via Android
中间件可以解决呀。
|
6
wenbinwu 2017-12-01 23:59:28 +08:00
写一个中间件,从 request 拿 user,从 path 里拿路径,然后自己决定怎么给权限
|
7
hu6360567 2017-12-02 00:16:01 +08:00 via Android
如果都是静态的,nginx 是不是更符合要求
|
8
guiqiqi 2017-12-02 03:51:48 +08:00 via iPhone
Django 我不太清楚,但是我前一段时间写了一个 Flask 基于 Flask 的用户权限管理插件,可以通过装饰器引用对于每个 url 实现用户组的权限设置,就是在来请求的时候拿里面用户的 cookie 检查,看对应的组 cookie 是不是具有相同权限 /更高权限的用户,如果是就继续交由路由函数处理,否则就 return 一个函数值,可以由装饰器传入参数指定。手机写的,比较乱,但希望对你有帮助。
|
9
KgM4gLtF0shViDH3 2017-12-02 09:56:53 +08:00 via Android
简单点就在控制器里面直接取出用户判断呗
|
10
zhiqiang OP 最后还是自定义了一个 User model 替代默认的 User,在里面添加 permission 来解决的。感觉比较丑。先这样吧。
|
11
yinzishao17 2018-01-09 20:02:22 +08:00
创建一个 Model acl
``` id, app_label, model '42', 'action', 'acl' ``` 然后根据 url 生成相应的权限。 ``` #auth_permission 表 id, name, content_type_id, codename '123', 'trends list', '42', 'trends/list' ``` 我是这样处理的 |