python – Django – 阅读当前的用户身份验证后端类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django – 阅读当前的用户身份验证后端类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1510字,纯文字阅读大概需要3分钟。
内容图文
![python – Django – 阅读当前的用户身份验证后端类](/upload/InfoBanner/zyjiaocheng/775/63e9561a65724041ace5bdfba899c35b.jpg)
我正在使用Django的自定义身份验证后端,从遗留系统自动创建和登录用户.我的后端课程是这样的:
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User
from sfi.models import Employee
import base64, hashlib
class SFIUserBackend(ModelBackend):
def authenticate(self, username=None, password=None):
if not username or not password:
return
digest = base64.standard_b64encode(hashlib.md5(password).digest())
user = None
try:
employee = Employee.objects.get(login=username, passwd=digest)
user, created = User.objects.get_or_create(username=username)
if created:
# setting attributes
user.first_name = employee.names[:30]
user.last_name = employee.surnames[:30]
user.is_staff = True
user.save()
except Employee.DoesNotExist:
pass
return user
到目前为止,它工作正常.但是,我需要在模板中读取当前登录用户的后端类.
使用request.user.backend表示用户没有属性后端…我无法从会话中读取它(使用request.session._auth_user_backend),因为Django模板系统抱怨“变量和属性可能不以下划线开头”.
我正在使用django.contrib.auth.views.login来允许用户登录.我错过了什么?
解决方法:
当用户使用django.contrib.auth.authenticate(username =’foo’,password =’bar’)函数进行身份验证时,后端属性将添加到用户对象.
此函数依次调用您在settings.py文件中指定的所有AUTHENTICATION_BACKENDS,直到它能够使用其中一个成功进行身份验证.
如果您的用户“已登录”但没有后端属性,这可能意味着您没有正确地对其进行身份验证.当你应该调用django.contrib.auth.authenticate函数时,你可能直接调用了SFIUserBackend.authenticate函数吗?
看看这些custom authentication docs.
内容总结
以上是互联网集市为您收集整理的python – Django – 阅读当前的用户身份验证后端类全部内容,希望文章能够帮你解决python – Django – 阅读当前的用户身份验证后端类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。