【问题标题】:Django request.session.save() authenticationDjango request.session.save() 身份验证
【发布时间】:2013-11-30 04:21:33
【问题描述】:

有点奇怪,我有这样做的理由,我知道 Django 是开箱即用的,所以当我问的时候把它放在一边.....有可能 在 Django 中为标准用户模型中不存在的用户创建一个经过身份验证的会话。 即我想要为访问创建一个一次性登录(会话),允许我使用 request.tempUser.is_authenticated() 几乎就像匿名访问,但是认证!我不是在这里谈论自定义用户模型,但如果可能的话,我想在 Django 中使用标准的身份验证内容?

这是我迄今为止尝试过的request.session.save(),但这不会......登录用户。

if member.check_password(password):
            # Start new session for member???????
            request.session.save()
            return self.create_response(request, {
                'success': True
            })

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    我之前做过这个,我们有一个会话中间件(我们编写的),用于查看当前登录的用户是否是有效用户。

    在登录时我们执行以下操作

    def login(request, username, password):
        # not the actual code, but you get the gist
        logged_in_user = authenticate(username, password)
        request['cur_user'] = logged_in_user.username
    

    如果该变量未设置或未设置为正确的用户名,我们会退回用户并清除会话。

    这将记录用户,本质上您只需在代码中跟踪该变量以确保会话有一个有效的用户附加到它。

    【讨论】:

    • 您好,感谢您的回复。快速快速的问题是这仍然使用 Django 身份验证系统登录吗?每次我尝试都会得到“error_message”:“'AnonymousUser' 对象没有属性'backend'”,
    • 不,但此时您正在编写自己的身份验证系统。我想不出任何方法可以将您自己的身份验证对象用于需要另一个身份验证对象的系统。您绝对可以扩展身份验证系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2011-09-23
    • 2013-09-09
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多