python - django 中特定页面失去身份验证

标签 python django authentication

如果我在登录后移动特定页面,我会在 django 中丢失身份验证。 然后我移动另一个页面,无需登录即可再次获得身份验证。

def user(request, user_id):
    """
    Display a user

    :param request: request
    :param user_id: user id
    :return: render
    """
    _user = get_object_or_404(User, id=user_id)
    _groups = _user.groups

    return render(
        request,
        'archive/user/user.html',
        {
            'user': _user,
            'groups': _groups.exclude(privacy='CLOSED'),
        }
    )

这是有问题的查看代码。

最佳答案

如果有基于类的 View ,您应该使用LoginRequiredMixins。 这将检查用户是否通过身份验证来访问该页面。 如果通过身份验证,则会显示该页面,否则您可以再次重定向到登录页面。

示例:

from django.contrib.auth.mixins import LoginRequiredMixin

class home(LoginRequiredMixin,View):
    login_url = "/"
    def get(self,request):
        user = request.user
        s = Person.objects.get(pk=user.id)
        return render(request,'chat/home.html',locals())

在上面的示例中,如果用户未经过身份验证login_url 是您提供重定向链接的位置。在这里,我已重定向到根目录,即登录页面。 您可以这样定义您的 View 。

对于基于函数的 View ,您可以使用login_required 装饰器

为了安全起见,您还应该使用 Django session 。

关于python - django 中特定页面失去身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34469076/

相关文章:

python - 计算机锁定时的鼠标事件

python - 如何在 Django 中翻译表单的标签和验证消息

python - 似乎无法找到如何在 App Engine 中检查有效电子邮件

android - 用于身份验证和服务器通信的 Accountmanager 与 sharedpreference

authentication - OpenID Connect 适用于物联网吗?

python - 如何将多个图像叠加到特定坐标上的基础图像上?

python - 如果不返回错误,则无法使用 ProcessPoolExecutor 进行并行处理

Java OkHttp请求无法满足

python - 本地 HTML 文件无法正确加载到 Dash 应用程序中

django - TypeError 对象不可迭代