您的位置:首页技术文章
文章详情页

Django 用户登陆访问限制实例 @login_required

【字号: 日期:2024-10-07 18:52:08浏览:42作者:猪猪

在网站开发过程中,经常会遇到这样的需求:用户登陆系统才可以访问某些页面,如果用户没有登陆而直接访问就会跳转到登陆界面。

要实现这样的需求其实很简单:

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 action='/accounts/login/' method='post'>{% csrf_token %}<!--csrf_token:生成令牌--><h2 align='center'>登录系统</h2><label for='inputUsername' class='sr-only'>username</label><input type='text' name='username' placeholder='username' required autofocus><label for='inputPassword' class='sr-only'>Password</label><input type='password' name='password' placeholder='Password' required><div class='checkbox'><label><input type='checkbox' value='remember-me'> 记住密码</label></div><br /><button 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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。

标签: Django
相关文章: