首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS/Django:如何进行双重认证?

iOS/Django:如何进行双重认证?
EN

Stack Overflow用户
提问于 2017-03-03 14:00:09
回答 1查看 170关注 0票数 0

我已经创建了一个API,用于以json的形式从postgresql数据库中获取经过处理的数据。我能够使用Django Rest框架通过api对用户进行身份验证,并获得相同的身份验证令牌。现在,在我的应用程序的一些页面中,我需要在web应用程序的web视图中显示页面。这些页面需要csrf令牌才能访问。csrf令牌是在web应用程序登录的提交按钮上生成的。

我可以从登录后生成的cookie中提取csrf令牌。所以这就是我希望实现的目标。每当我从我的应用程序的登录屏幕登录时,我想以编程方式在后台创建一个网页视图,填写登录和密码,然后点击网页中的提交按钮。然后,我将继续从cookie中提取令牌。

我有的大部分部分,我不能弄清楚如何以编程的方式填写网页视图并点击提交按钮。(我想点击submit按钮的原因是因为视图检查请求是否是post和ajax)。有人能解释一下我是如何以这种方式执行双重身份验证的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-14 13:39:12

如果有人好奇,我设法在登录时通过隐藏的webview执行了双重身份验证。我点击api url来获取api auth令牌,同时点击我的webview上的web应用url。我填写了用户名和密码,然后通过代码点击提交按钮

代码语言:javascript
运行
复制
func webViewDidFinishLoad(_ webView: UIWebView) {
    print("loadFinished")
    let loadUsername = "var emailText = document.getElementById('email'); emailText.value = '\(username)';"
    let loadPass = "var passText =  document.getElementById('password'); passText.value = '\(pass)';"
    let submitAction = "var passFields = document.getElementById('login_button'); passFields.click();"

    webView.stringByEvaluatingJavaScript(from: loadUsername)
    webView.stringByEvaluatingJavaScript(from: loadPass)
    webView.stringByEvaluatingJavaScript(from: submitAction)
    print("Executed!")

    let req = URLRequest(url: URL(string: "https://app.xyz.io/abc/")!)
    if tf != true {
        webView.loadRequest(req)
        tf = true
    }

}

在我的请求加载并成功通过身份验证之后,我只是从会话的cookie中检索csrf令牌和sessionid。

希望这对某些人有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42571685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档