首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让override Django登录

如何让override Django登录
EN

Stack Overflow用户
提问于 2014-05-09 22:38:59
回答 3查看 11.1K关注 0票数 5

我想覆盖Django-login来创建自定义登录,但我找不到方法。

原因是在特定情况下,我不能使用csrf身份验证,所以我想创建一个自定义登录,然后创建一个安全层,以确保我的自定义登录是安全的。

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-09 23:17:53

答案就在这里:

https://docs.djangoproject.com/en/1.5/topics/auth/default/#how-to-log-a-user-in

代码类似于:

代码语言:javascript
复制
user = authenticate(username=username, password=password)
if user is not None:
    if user.is_active:
        login(request, user)
票数 1
EN

Stack Overflow用户

发布于 2014-05-10 04:51:35

要覆盖django自定义管理员,您必须创建urls路径和一个视图,您可以在其中检查和登录/注销用户。以此为例:

urls.py

代码语言:javascript
复制
url(r'^accounts/auth/$', 'auth_view'),

views.py

代码语言:javascript
复制
from django.contrib import auth

def auth_view(request):

    # here you get the post request username and password
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')

    # authentication of the user, to check if it's active or None
    user = auth.authenticate(username=username, password=password)

    if user is not None:
        if user.is_active:
            # this is where the user login actually happens, before this the user
            # is not logged in.
            auth.login(request, user)

            ...
            return ...

    else :
        return HttpResponseRedirect("Invalid username or password")

您的html表单:

代码语言:javascript
复制
<form role="form" action="/accounts/auth/" method="POST">
票数 6
EN

Stack Overflow用户

发布于 2017-12-13 15:00:58

urls.py

代码语言:javascript
复制
url(r'^$', auth_views.login, {'template_name': 'home/login.html'}, name='login')

login.html

代码语言:javascript
复制
<form method="post">
{{ form.as_p }}
{{ form.non_field_errors }}
<input type="submit">
</form>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23567373

复制
相关文章

相似问题

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