如何修复 Django 中的自动登录?

Posted

技术标签:

【中文标题】如何修复 Django 中的自动登录?【英文标题】:How To Fix Auto Login In Django? 【发布时间】:2020-03-08 02:48:38 【问题描述】:

当我像这样访问此 URL 时如何修复自动登录:127.0.0.1:8000/profile/1 当我看到如果有人访问该 URL 时,Django 无需密码和用户名即可登录他

错误: 如何修复 Django 中的自动登录

您可以查看 Gif 了解更多详情:

Views.py

def profile_detail(request,pk):
    user = get_object_or_404(User, pk=pk)
    model = user_register_model()
    return render(request,'profile_detail_view.html','user':user,'model':model,)

urls.py

from . import views
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('', views.index,name='index'),
    path('accounts/signup/', views.user_reg,name='register'),
    path('profile/<int:pk>',views.profile_detail,name='profile'),

]

这是我的 Base.html

<ul class="navbar-nav ml-auto">

  % if not user.is_authenticated %
    <li class="nav-item">

      <a class="nav-link navaour" href="% url 'register' %"><i class="fa fa-check-square-o"></i>&nbsp; Sign up Free</a>
    </li>    
    <li class="nav-item">

      <a class="nav-link navaour" href="% url 'login' %"><i class="fa fa-user"></i>&nbsp; Login</a>
    </li>

  % else %
    <li class="nav-item">

      <a class="nav-link navaour" href=""><i class="fa fa-user"></i>&nbsp; Profile</a>
    </li>
    <li class="nav-item">

     <a class="nav-link navaour" href="% url 'logout' %"><i class="fa fa-power-off"></i>&nbsp; Logout</a>
    </li>
  % endif %     

这是我的profile_detail_view.html

<div class="row">
                                            <div class="col-sm-3 col-md-2 col-5">
                                                <label style="font-weight:bold;">Full Name</label>
                                            </div>
                                            <div class="col-md-8 col-6">
                                                user.username
                                            </div>
                                        </div>

感谢任何帮助

谢谢!

【问题讨论】:

我认为超级用户已登录。 @sandeep 不,我刷新并注销,然后再试一次,我再次收到此错误 @sandeep 如果我再次回到主页,注销按钮就会消失 使用“% if not request.user.is_authenticated %”。你错过了请求 @sandeep 谢谢,请给我答案,以便我接受并投票给你! 【参考方案1】:

在您的模板中将% if not user.is_authenticated % 替换为% if not request.user.is_authenticated %。您错过了请求

【讨论】:

【参考方案2】:

你也可以在views.py和导入库中的def之前使用@login_required 从 django.contrib.auth.decorators 导入 login_required

这将有助于阻止未登录用户查看 url。

【讨论】:

以上是关于如何修复 Django 中的自动登录?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django rest_framework_jwt,如何允许使用准时使用代码自动登录?

Django 登录检查-自动重定向到登录页

用户注册后Django自动登录(1.4)

如何修复在 Django Rest Framework 中使用 REST API 登录时出现的 CSRF 错误?

Django allauth 社交登录:使用注册的电子邮件自动链接社交网站配置文件

在所有django CBV中自动设置next的值