首页 > 解决方案 > Django - 挑战和响应场景(创建随机字符串并由客户端签名,以便它签入服务器)

问题描述

在 asp.net 中,我使用此代码:(服务器端)

if (!post-back)
   create challenge
else
   verify response

在java脚本中:(客户端)

onclientclick(aspBTN)
   response = sign(challenge)

注意:在顶部代码页面中加载并创建挑战,因此用户通过单击 html 页面中的 asp btn 在 java 脚本中运行 sign func 并在加载页面中运行验证响应。

在 Django 中,我创建挑战并保存在隐藏项目中:view.py 文件:

def index(request):   
    rng = uuid.uuid4().hex       
    request.session["challenge"] = rng   
    return render(request,"Djangoapp/index.html", {'challenge': rng})

我定义了这个 btn:

<input id="btnLogin" type="button" value="Login" class="btn btn-primary btn-lg" onclick="Sign()" />

在符号函数中我得到响应。现在我需要运行服务器端函数(python)来验证响应。

我是 django 的初学者。

标签: javascriptpythondjango

解决方案


好的,据我了解,您在单击按钮时要实现的是服务器端函数调用?

有多种方法可以实现: 1. Xhr 或 Ajax 调用 2. 在 javascript 中使用 fetch api

所有这些都将与在 django 后端创建的 RESTful API 进行交互。例如 :

def my_api_call(request):
    post_data = json.loads(request.body)
    perform_activity = post_data['activity_status']
    if perform_activity == True:
        call_function()

    return JsonResponse({"status":200, "response":"SUCCESS"})

如果这不是您想要的,也许可以通过发布代码来提供更清晰的信息。


推荐阅读