Django身份认证--禁止匿名登录
2017-08-25 16:03
351 查看
项目已经实现了登录和注销功能,但还是没起作用,因为注销后还是可以直接通过url:http://127.0.0.1:8000/manage/main/ 访问到管理界面。所以还是需要进行访问控制。
查了下资料,在Django里面,最简单的作法只需要在相应的视图函数前面增加@login_required修饰符即可:
然后在视图函数前增加修饰符:
说明:如果用户还没有登录,默认会跳转到‘/accounts/login/’。这个值可以在settings文件中通过LOGIN_URL参数来设定。
因此在urls.py中设置:
说明:
之前查到的资料是用这种形式:
但报错:TypeError: view must be a callable or a list/tuple in the case of include().
原因是:django1.10 后url中的第二个参数不再支持使用字符串的方式,而是要用真正的视图函数名称来代替。
Stack Overflow上的原话:
查了下资料,在Django里面,最简单的作法只需要在相应的视图函数前面增加@login_required修饰符即可:
from django.contrib.auth.decorators import login_required #导入包
然后在视图函数前增加修饰符:
@login_required #表示需要登录才能访问本页面,禁止匿名登录 def gotomanage(request): return render(request, 'schemes/tradescheme.html')
说明:如果用户还没有登录,默认会跳转到‘/accounts/login/’。这个值可以在settings文件中通过LOGIN_URL参数来设定。
因此在urls.py中设置:
from django.contrib.auth.views import login #先导入此包 url(r'^accounts/login/$', login, {'template_name': 'login.html'}), # 用自己的登录界面来代替原来的默认值
说明:
之前查到的资料是用这种形式:
url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
但报错:TypeError: view must be a callable or a list/tuple in the case of include().
原因是:django1.10 后url中的第二个参数不再支持使用字符串的方式,而是要用真正的视图函数名称来代替。
Stack Overflow上的原话:
String reference is deprecated in Django 1.10. So, Django 1.10 no longer allows you to specify views as a string in your URL patterns. You can no longer pass import paths to url(), you need to pass the actual view function. The solution is to update your urls.py to include the view callable. This means that you have to import the view in your urls.py.
相关文章推荐
- django使用邮箱账号密码做用户登录认证,启用加密
- ssh安全远程登录的身份认证原理
- linux as4 ftp如何禁止匿名登录
- NetScaler OTP双因子身份认证登录演示
- 禁止以操作系统认证方式登录数据库
- django怎么在没有密码不能认证的情况下完成用户登录
- 【React全家桶入门之十】登录与身份认证
- HTML5用户身份认证源代码:注册、登录、会话保持的解决方案
- Django实战之用户认证(用户登录与注销)
- 禁止以操作系统认证方式登录数据库
- [Django实战] 第4篇 - 用户认证(用户登录)
- Microsoft ADFS+Shibboleth配置联合身份认证+单点登录服务
- Kerberos身份认证在域用户工作站登录中的应用
- 【React全家桶入门之十】登录与身份认证
- 禁止以操作系统认证方式登录数据库
- Nodejs进阶:express+session实现简易登录身份认证
- django中的认证与登录
- 【SQL 问题】SQL2008 SQL Server身份认证方式登录失败(错误18456)解决方法图解
- 禁止以操作系统认证方式登录数据库
- 使用jimail匿名发邮件,不用身份认证的哦