0

我目前正在模板中使用 dajaxice 调用,我希望能够在我的 dajax 调用的 python 函数中检索当前登录的用户。

我知道 dajax 将“请求”参数传递给包含会话 ID 的 python 函数,但我没有运气确定变量“请求”的类型。我尝试将其转换为字符串、将其解码为 JSON 字符串以及多种其他方法。

我想做的就是在 dajax 调用的 python 函数中找到当前登录的用户,而不是从实际模板中传递它,因为这在安全方面是不可靠的。

我的相关代码的分解版本:

达贾克斯电话:

Dajaxice.fortura_test.rbac_test(rbac_callback,{});

rbac_test():

@dajaxice_register
def rbac_test(request):
    import re;
    from django.contrib.sessions.models import Session
    from django.contrib.auth.models import User
    request_string = str(request);
    request_list = [];
    for x in request_string:
        request_list.append(x);
    request_string = ''.join(request_list);
    m = re.match(r"'sessionid'\: '([A-Za-z0-9]+)'",request_string);
    if m is not None:
        session_key = m.group(0);
        session = Session.objects.get(session_key=session_key)
        uid = session.get_decoded().get('_auth_user_id')
        user = User.objects.get(pk=uid)
        return user.id
    else:
        return 'No match';

我目前使用的上述方法不太奏效,但我觉得应该有比我目前处理这个更好的方法。

任何帮助,将不胜感激。

4

1 回答 1

1

如果这是一个普通的 Django 视图,那么request它就是 Django 的HTTPRequest 对象,您可以使用该对象获取当前登录的用户,该用户request.user将返回一个contrib.auth.models.User实例(您可以确保他们已通过 using 登录request.user.is_autenticated()

于 2012-04-17T05:57:37.027 回答