时间:2021-05-22
在网站开发过程中,经常会遇到这样的需求:用户登陆系统才可以访问某些页面,如果用户没有登陆而直接访问就会跳转到登陆界面。
要实现这样的需求其实很简单:
1、在相应的 view 方法的前面添加 django 自带的装饰器 @login_required
2、在 settings.py 中配置 LOGIN_URL 参数
3、修改 login.html 表单中的 action 参数
# views.pyfrom djanco.contrib.auth.decorators import login_requiredfrom django.shortcuts import render_to_response@login_required def index(request):return render_to_response('index.html')# settings.py....LOGIN_URL = '/accounts/login/' # 根据你网站的实际登陆地址来设置....如果要使用 django 默认登陆地址,则可以通过在 urls.py 中添加如此配置:
# urls.py....url(r'^accounts/login/', views.login),....# login.html<div class="container"><form class="form-signin" action="/accounts/login/" method="post">{% csrf_token %}<!--csrf_token:生成令牌--><h2 class="form-signin-heading" align="center">登录系统</h2><label for="inputUsername" class="sr-only">username</label><input type="text" name="username" id="inputUsername" class="form-control" placeholder="username" required autofocus><label for="inputPassword" class="sr-only">Password</label><input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required><div class="checkbox"><label><input type="checkbox" value="remember-me"> 记住密码</label></div><br /><button class="btn btn-lg btn-primary btn-block" type="submit">登录</button><br /><span style="color: red;">{{ login_err }}</span></form></div><!-- /container -->补充知识:Django 之禁止特定的 IP访问系统
有时候我们上一些网站,或者用爬虫技术去爬,使用的次数很频繁,会被网站记录加入黑名单,当我们再次访问的时候会被提示,你不能访问该网址。
那么这个技术在 Django 里面如何实现呢?
我搜索了一些方法,找到的资料不多,有一些可能有效,但是没有可以直接运行 demo,那么这里就提供一种使用中间件的 demo,亲测有效。
自定义一个 middleware.py 文件,这个文件要在 Django 的 settings.py 配置文件中被引用,所以我放在与 settings.py 同文件夹的目录下。
middleware.py
from django.http import HttpResponsefrom django.utils.deprecation import MiddlewareMixin # 1.10.xclass TestMiddleware(MiddlewareMixin): def process_view(self,request,view_func,*view_args,**view_kwargs): EXCLUDE_IPS = ['192.168.1.54'] if 'HTTP_X_FORWARDED_FOR' in request.META: ip = request.META['HTTP_X_FORWARDED_FOR'] else: ip = request.META['REMOTE_ADDR'] if ip in EXCLUDE_IPS: return HttpResponse('<h1>您的ip被禁止</h1>')其中,关于自定义中间件的函数名称例如 process_view() ,还有其它的例如 _init_ 之类在文档中有具体解释,这里只用到这个。
然后在 settings.py 中引入这个中间件:
settings.py
[ 'hunter.middleware.TestMiddleware',]其中 hunter 是我的系统的名称,在末尾添加即可。
然后重启我们的 Django 系统,就可以实现禁止特定 IP 访问的功能。
注意
这个 EXCLUDE_IPS 是我手动添加的一个列表,如果想对这个 IP 进行可持续发展的管理,可以在用户访问系统的时候记录下他们的 IP ,然后记录在 MySQL 数据库中,对其中的异常数据进行禁止的处理。
对于访问用户频繁访问、添加黑名单有很好的疗效,这里值得推荐。
以上这篇Django 用户登陆访问限制实例 @login_required就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Django在做后台系统过程中,我们通常都会为view函数添加@login_required装饰器,这个装饰器的主要作用就是在用户访问这个方法时,检查用户是否已
使用Django的时候,我发现一个很神奇的装饰器:@login_required,这是控制一个view的权限的,比如一个视图必须登录才可以访问,可以这样用:@l
前言Django提供了多种装饰器,其中login_required可能是经常会使用到的。这里介绍下四种使用此装饰器的办法。当然,在使用前,记得在工程目录的set
实例内容登陆界面处理登陆表单数据处理登陆表单数据(异步)清除本地数据登录界面:在app.json中添加登陆页面pages/login/login,并设置为入口。
本文实例讲述了CI框架实现cookie登陆的方法。分享给大家供大家参考,具体如下:第一步:login.php//登陆方法publicfunctionlogin(