Django:阻止访问一个应用程序中的特定用户
Django: Block access to specific users in one app
我正在构建一个 Django 项目 demonstration
,其构成中包含 3 个应用程序(应用程序、博客、前端)
我面临的挑战如下:
我想限制对应用程序的访问app
只允许注册用户。
换句话说,限制对 app
django app.
中所有页面的访问
经过一些研究,偶然发现了以下链接:
- Link 1
- Link 2
- Link 3
Link 1中的答案似乎更容易实现。
尽管如此,我还是遇到了一些问题,因为我在 Django 中使用中间件的经验很少。
在评论中询问:
'如果用户没有登录,我想限制一个名为 app 的应用程序的访问。中间件 RequireLoginMiddleware class 应该放在哪里?'
但到目前为止还没有回复,我似乎没有找到解决这个问题的方法。
任何人都可以向我解释我需要做什么才能限制对 django 应用程序中所有页面的访问,只允许注册用户?
您的中间件位于何处由您决定,唯一重要的是它在您的 sys.path
中。
另请注意,Best way to make Django's login_required the default 中的中间件依赖于硬编码的 url(好吧,至少在 settings
中是硬编码的),这是 DRY 违规行为。这可以通过对 app
应用程序的每个 url 使用 reverse_lazy
来解决,但此时您只需使用 login_required
装饰 app
视图就会更快
如何修复:
在 views.py
的内部,从 app
应用程序目录,
添加了以下内容:
from django.contrib.auth.decorators import login_required
并且,就在调用视图之前:
@login_required(login_url="/admin/") #location where users are going to be able to do the login
def profile(request): #view
这意味着:一旦用户未登录并尝试访问视图,he/she/it将被重定向到登录屏幕
我正在构建一个 Django 项目 demonstration
,其构成中包含 3 个应用程序(应用程序、博客、前端)
我面临的挑战如下:
我想限制对应用程序的访问app
只允许注册用户。
换句话说,限制对 app
django app.
经过一些研究,偶然发现了以下链接:
- Link 1
- Link 2
- Link 3
Link 1中的答案似乎更容易实现。
尽管如此,我还是遇到了一些问题,因为我在 Django 中使用中间件的经验很少。
在评论中询问:
'如果用户没有登录,我想限制一个名为 app 的应用程序的访问。中间件 RequireLoginMiddleware class 应该放在哪里?'
但到目前为止还没有回复,我似乎没有找到解决这个问题的方法。
任何人都可以向我解释我需要做什么才能限制对 django 应用程序中所有页面的访问,只允许注册用户?
您的中间件位于何处由您决定,唯一重要的是它在您的 sys.path
中。
另请注意,Best way to make Django's login_required the default 中的中间件依赖于硬编码的 url(好吧,至少在 settings
中是硬编码的),这是 DRY 违规行为。这可以通过对 app
应用程序的每个 url 使用 reverse_lazy
来解决,但此时您只需使用 login_required
装饰 app
视图就会更快
如何修复:
在 views.py
的内部,从 app
应用程序目录,
添加了以下内容:
from django.contrib.auth.decorators import login_required
并且,就在调用视图之前:
@login_required(login_url="/admin/") #location where users are going to be able to do the login
def profile(request): #view
这意味着:一旦用户未登录并尝试访问视图,he/she/it将被重定向到登录屏幕