当前位置: 首页 > 编程笔记 >

在Django中限制已登录用户的访问的方法

翟博雅
2023-03-14
本文向大家介绍在Django中限制已登录用户的访问的方法,包括了在Django中限制已登录用户的访问的方法的使用技巧和注意事项,需要的朋友参考一下

有很多原因需要控制用户访问站点的某部分。

一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后重定向到登陆页面:

from django.http import HttpResponseRedirect

def my_view(request):
  if not request.user.is_authenticated():
    return HttpResponseRedirect('/accounts/login/?next=%s' % request.path)
  # ...

或者显示一个出错信息:

def my_view(request):
  if not request.user.is_authenticated():
    return render_to_response('myapp/login_error.html')
  # ...

作为一个快捷方式, 你可以使用便捷的 login_required 修饰符:

from django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
  # ...

login_required 做下面的事情:

    如果用户没有登录, 重定向到 /accounts/login/ , 把当前绝对URL作为 next 在查询字符串中传递过去, 例如: /accounts/login/?next=/polls/3/ 。

    如果用户已经登录, 正常地执行视图函数。 视图代码就可以假定用户已经登录了。
=

 类似资料:
  • 问题内容: 我正在努力为正在创建的应用设置登录系统。 我可以为用户登录或注销设置cookie。我认为,如果用户已登录,测试每个视图都不是一个非常优雅的解决方案,并且我担心这里和那里的页面可能会掉入裂缝(这是一个相当大的应用程序)。 我在想最好的方法是以某种方式拦截路由更改并检查用户是否已登录,否则将其发送到登录/创建用户页面。我发现了一些方法,但是似乎没有正式记录。有没有人在现实世界中使用过这种方

  • 现在我么可以改进 new_topic 视图,将发布主题的用户设置当前登录的用户,取代之前直接从数据库查询出来的第一个用户,之前这份代码是临时的,因为那时候还没有方法去获取登录用户,但是现在可以了: boards/views.py (完整代码) from django.contrib.auth.decorators import login_required from django.shortcut

  • 本文向大家介绍Django中对通过测试的用户进行限制访问的方法,包括了Django中对通过测试的用户进行限制访问的方法的使用技巧和注意事项,需要的朋友参考一下 限制访问可以基于某种权限,某些检查或者为login视图提供不同的位置,这些实现方式大致相同。 一般的方法是直接在视图的 request.user 上运行检查。 例如,下面视图确认用户登录并是否有 polls.can_vote权限: 并且Dj

  • 问题内容: 我想限制登录用户可以使用的文件,否则返回403错误或类似错误。例如,用户只有在登录后才能查看/下载。 我知道如果未登录,如何使用Flask-Login控制文件的实际显示,但是如果他们直接在浏览器中访问链接,我将不知道如何阻止访问文件。 问题答案: Flask添加了一条静态路由来提供静态文件。在生产中,通常会“短路”此路由,以便Nginx在请求到达您的应用程序之前为文件提供服务。不用添加

  • 本文向大家介绍Django 限制用户访问频率的中间件的实现,包括了Django 限制用户访问频率的中间件的实现的使用技巧和注意事项,需要的朋友参考一下 一、定义限制访问频率的中间件 common/middleware.py 二、将中间件加入配置文件 setting.py 对使用 rest_framework 框架的项目来说,可以使用框架的设置来对api的访问频率进行限制 以上就是本文的全部内容,希

  • Azure Active Directory图形Api允许您对登录的用户执行操作。 https://msdn.microsoft.com/en-us/library/azure/ad/graph/api/signed-in-user-operations 这很有意义,因为我从未指定用户。如果使用获得的访问令牌,则会收到错误消息“访问令牌丢失或格式错误”。显然,这不是一个图形API访问令牌。 我如何