python - 是否可以在不使用 django 的身份验证和登录方法的情况下编写登录功能的代码?

标签 python django authentication

到目前为止,我已经使用 django 的默认身份验证和登录方法作为我的项目的登录代码。请参阅下面的代码,

“我的登录代码”

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        if(len(username.strip(' ')) == 0):
            return render_to_response('login.html', {'error_message': 'Username should not be empty', 'username': username}, context_instance=RequestContext(request))
        if(len(password.strip(' ')) == 0):
            return render_to_response('login.html', {'error_message': 'Password should not be empty', 'username': username}, context_instance=RequestContext(request))
        authuser = authenticate(username=username, password=password)
        if authuser and authuser.is_active:
            try:
                login(request, authuser)
            except (RuntimeError, TypeError, NameError):
                errmessage = ERROR_MESSAGE % (RuntimeError, TypeError, NameError)
                CapturLog().logdata(request, 'LoginError', 'Login', errmessage)
            else:
                CapturLog().logdata(request, 'Login', 'Login', 'Successfully Logged In')
            return HttpResponseRedirect(reverse('index:home'))
        else:
            return render_to_response('login.html', {'error_message': 'Invalid User', 'username': username}, context_instance = RequestContext(request))
    return render_to_response('login.html', context_instance=RequestContext(request)) 

这段代码运行良好,但我不想使用 django 的默认方法。相反,我想使用我自己的方法来检查身份验证和登录。是否可能? 我在上面的代码中添加了一些行以进行身份​​验证,如下所示,

 authuser = _authenticate_check(username, password)

 def _authenticate_check(username=None, password=None):
    try:
        if '@' in username:
            user = User.objects.get(email=username)
        else:
            user = User.objects.get(username=username)
    except User.DoesNotExist:
        return None
    # now check the password
    if user.check_password(password):
                return user

然后,如果我尝试登录(请求,用户),它不起作用。它显示此行中的错误(即未找到后端)。
是否可以编写手动代码进行身份验证和登录,而不是使用 django 的默认方法?
提前致谢 !

最佳答案

简单的回答:当然你可以自己写。这个模块只是一个 Python 模块,专为您构建,无需大量工作即可使用。

真正的答案:他们可能会做你想要的一切,甚至更多,Django 的整个哲学是 DRY(不要重复自己),所以如果它是内置的并且可以处理你的情况,请使用它而不是重新 -发明轮子。

您当然可以编写自己的身份验证方法,但您在这篇文章中没有提出一个很好的论据。仅仅因为您已经仔细阅读了文档并且感觉不舒服,那么遵守是不够的。查看当前可用的工具是否有效。如果没有,那么是时候定义为什么/为什么不以及你需要什么来完成你所追求的目标。

如果您花时间了解它们如何协同工作,内置 session 、用户、组将会非常棒。

关于python - 是否可以在不使用 django 的身份验证和登录方法的情况下编写登录功能的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749726/

相关文章:

python - 将文本文件的部分内容放入列表中

python - Django应用无法识别.env文件,我尝试通过os,Django-environ和dotenv对其进行设置,但没有任何效果

python - 如何使用 Django 删除表中的所有数据

java - RuntimeException:无法实例化 Activity 组件信息

python - 在没有索引的 for 循环中引用列表条目,可能吗?

python - 如何在Python列表理解中翻译嵌套的if-else

python - 无法导入QUERY_TERMS

安卓 : authentication to php server application

javascript - Windows 8 应用程序 - 单点登录应用程序 - 未加入域

python - 音频文件到文本文件python