在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/ 。

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

(0)

相关推荐

  • Python中Django框架利用url来控制登录的方法

    本文实例讲述了Python中Django框架利用url来控制登录的方法.分享给大家供大家参考.具体如下: from django.conf.urls.defaults import patterns,url #or use login_required from django.contrib.admin.views.decorators import staff_member_required def login_url(regex, view, *p,**args): """

  • 浅谈django中的认证与登录

    认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否正确 一般需要username  password两个关键字参数 如果认证信息有效,会返回一个  User  对象.authenticate()会在User 对象上设置一个属性标识那种认证后端认证了该用户,且该信息在后面的登录过程中是需要的.当我们试图登陆一个从数据库中直接取出来不经过authent

  • Django小白教程之Django用户注册与登录

    Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 学习django学得超级吃力,最近弄个最简单的用户登录与注册界面都是那么难,目前算是基本实现了,虽然功能特别特别简单但是做一个记录,以后学习深入了再来补充: 首先创建项目,到项目所在目录:django-admin startproject demo0414_userauth 进入项目:cd demo0414_userauth 创建相应的app:django-admin startapp acco

  • 详解Django框架中用户的登录和退出的实现

    Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出. Django提供两个函数来执行django.contrib.auth\中的动作 : authenticate()和login(). 认证给出的用户名和密码,使用 authenticate() 函数.它接受两个参数,用户名 username 和 密码 password ,并在密码对给出的用户名合法的情况下返回一个 User 对象. 如果密码不合法,authenticat

  • django实现登录时候输入密码错误5次锁定用户十分钟

    在学习django的时候,想要实现登录失败后,进行用户锁定,切记录锁定时间,在网上找了很多资料,但是都感觉不是那么靠谱,于是乎,我开始了我的设计,其实我一开始想要借助redis呢,但是想要先开发一个简单的,后续在拆分后,然后在去进行拆分, 这样也是很接近我们在真实的开发中所遇到问题. 我的思路是: 输入账号密码>是否已经登录>提示已经登录 输入账号密码>错误次数少于6次>校验密码>登录成功,记录登录时间,错误次数清空,记录登录状态 输入账号密码>错误大于六次>提示

  • Django自定义插件实现网站登录验证码功能

    前言 网站登录的时候我们常常会看到随机的验证码需要输入后台验证,如图: 现在我们来实现在Django中通过自定制插件来实现随机验证 check_code.py 基于PIL生成一个带验证码的图片和验证码,生成验证码图片需要Monaco.ttf字体(重要),可按自己要求更改check_code中的字体和字体文件位置 #!/usr/bin/env python # -*- coding:utf-8 -*- import random from PIL import Image, ImageDraw,

  • 在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' % reque

  • Django中使用session保持用户登陆连接的例子

    使用session保持用户登陆连接 在 view 中 login() 视图函数里增加如下语句 不允许重复登录语句 if request.session.get('is_login',None): return HttpResponseRedirect(reverse('index')) 一旦用户名和密码输入正确,就往 session 字典内写入用户状态和数据 request.session['is_login'] = True request.session['user_id'] = db_us

  • 详解Spring Security中获取当前登录用户的详细信息的几种方法

    目录 在Bean中获取用户信息 在Controller中获取用户信息 通过 Interface 获取用户信息 在JSP页面中获取用户信息 在Bean中获取用户信息 Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (!(authentication instanceof AnonymousAuthenticationToken)) { String currentU

  • django中账号密码验证登陆功能的实现方法

    今天分享一下django的账号密码登陆,前端发送ajax请求,将用户名和密码信息发送到后端处理,后端将前端发送过来的数据跟数据库进行过滤匹配,成功就跳转指定页面,否则就把相对应的错误信息返回,同时增加一个小功能,在规定时间内超过规定的登录次数,就锁住无法登陆,等下一个时间段再允许登陆. 一.通过ORM创建一张历史登陆表 class login_history(models.Model): user = models.CharField(max_length=32, verbose_name='登

  • 在django中使用apscheduler 执行计划任务的实现方法

    对于任何软件开发人员而言,为将来计划任务都是必不可少的工具. 尽管我们创建的许多编程旨在响应明确的触发或用户事件,但定期执行的后台进程也同样重要. "每个星期一早晨更新结果." "每天晚上分批下单." 甚至具有每日请求限制的第三方API也隐式要求这种行为. "我们只能每五分钟请求一次更新." 幸运的是,许多聪明的人已经解决了这个问题,并且不难找到python本地解决方案. Advanced Python Scheduler(APS)是一个很好的选

  • laravel利用中间件防止未登录用户直接访问后台的方法

    中间件介绍 http://laravelacademy.org/post/7812.html 创建中间件 php artisan make:middleware AdminLogin 然后我们打开kernel.php,将这个中间件加入到$routeMiddleware路由中间件中 'admin.login' => \App\Http\Middleware\AdminLogin::class, 一个简单的小判断,判断一下有没有session存在,如果有的话就直接走我们现在访问的路由,如果没有ses

  • Django 中自定义 Admin 样式与功能的实现方法

    自定义 Admin 样式与功能 1 页面修改中文 1.1 语言设置为中文 settings.py LANGUAGE_CODE = 'zh-hans' 修改结果 1.2 应用管理设置为中文 应用/apps.py from django.apps import AppConfig class BbssConfig(AppConfig): name = 'bbs' # 添加下面这句 verbose_name = 'BBS系统' 修改结果 1.3 数据库表设置为中文 应用/models.py class

  • Django中模型Model添加JSON类型字段的方法

    本文实例讲述了Django中模型Model添加JSON类型字段的方法.分享给大家供大家参考.具体如下: Django里面让Model用于JSON字段,添加一个JSONField自动类型如下: class JSONField(models.TextField): __metaclass__ = models.SubfieldBase description = "Json" def to_python(self, value): v = models.TextField.to_pytho

  • Django中文件上传和文件访问微项目的方法

    Django中上传文件方式. 如何实现文件上传功能? 1创建项目uploadfile: 创建app:front 项目设置INSTALLED_APPS中添加'front' INSTALLED_APPS = [ ''' 'front' ] #后面添加MEDIA_ROOT和MEDIA_URL STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR,'static') MEDIA_ROOT = os.path.join(BASE_DIR,'

  • 深入理解Django中内置的用户认证

    前言 本文主要给大家介绍了关于Django中内置用户认证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户输入的密码,这样一来就要自己编写大量的代码. 事实上,Django已经提供了内置的用户认证功能. 在使用"python manage.py makemigrationss"和"python m

随机推荐