Django应用程序,在proj上进行用户身份验证

2024-04-25 22:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

在项目级别处理用户身份验证时,如何处理应用程序内的用户身份验证?

我正在构建一个应用程序,当我创建数据库条目时,我需要一个经过身份验证的用户对象,但我不想处理应用程序内部的整个注册/登录逻辑,这应该在项目级别上进行学习。

这个应用程序需要一个用户登录,但在开发时我不知道该放在哪里。我能在内部“伪造”一个经过身份验证的用户吗设置.py为了这个项目?

更新

我意识到我所要做的就是在所有视图中添加@login峎之后登录/admin。然后我就可以得到我需要的数据请求.用户加上模型.ForeignKey(用户)给需要它的模型


Tags: 项目对象用户py模型身份验证视图数据库
2条回答

根据Django auth system documentation

如果您正在寻找限制登录用户访问的方法 使用login_required()修饰符:

from django.contrib.auth.decorators import login_required

@login_required(login_url='/accounts/login/')
def my_view(request):
        #your code

默认情况下,用户在成功身份验证时应该重定向到的路径存储在一个名为“next”的查询字符串参数中,在本例中是my_view,最后在用户登录用户对象挂接到request之后

没有默认的方法来伪造用户,但是您可以轻松地自己实现它。在

您只需创建一个登录硬编码用户的视图。在

def force_login(request):
    # this check is not really required, but probably a good idea
    if not settings.DEBUG:
        raise ImproperlyConfigured("Don't use the force_login view in production")
    user, created = User.objects.get_or_create(
        username='user',
        defaults={...})  # set whatever defaults you need
    user.backend = settings.AUTHENTICATION_BACKENDS[0]
    login(request, user)
    return HttpResponse('logged in')

现在您只需将此视图添加到您的urls.py。另一种方法是将其作为中间件编写。在

^{pr2}$

'django.contrib.auth.middleware.AuthenticationMiddleware',之后的settings.MIDDLEWARE_CLASSES中插入该中间件

更新:我将这个答案转换为blog post,并在PyPI上发布了中间件。在

相关问题 更多 >