首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deployd + Swift用户身份验证

Deployd + Swift用户身份验证
EN

Stack Overflow用户
提问于 2015-08-06 13:19:06
回答 1查看 423关注 0票数 1

我是斯威夫特的新手。我想验证一个用户。我用“Deployd”作为服务器。API的文档就是这样写的:

HTTP 若要对用户进行身份验证,请将带有用户名和密码属性的POST请求发送到/login。 帖子/用户/登录 {“用户名”:"johnsmith",“密码”:“密码”}

我正在使用Alamofire解析JSON数据。这是我的代码:

代码语言:javascript
复制
        let user = "root"
        let password = "root"
        // this is a testing user i've created in deployd's dashboard.

        let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)

        Alamofire.request(.POST, "http://localhost:2406/users/login/\(user)/\(password)")
            .authenticate(usingCredential: credential)
            .response { request, response, _, error in
                println(response)
        }

这是来自Xcode控制台的响应:

代码语言:javascript
复制
Optional(<NSHTTPURLResponse: 0x7fdd906dc3a0> { URL: http://localhost:2406/users/login/root/root } { status code: 400, headers {
    Connection = "keep-alive";
    "Content-Type" = "application/json";
    Date = "Thu, 06 Aug 2015 13:01:54 GMT";
    "Transfer-Encoding" = Identity; } })

我知道我这样做是完全错误的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-06 14:21:56

您正在使用http身份验证(headers),但是server / api并不要求您这样做(它实际上说400 -糟糕的请求--因此应该会指出API的错误使用);

相反,您必须在请求体中提供参数,因为规范规定它应该是您要提供给服务器的。要做到这一点,可以使用允许您包含参数的不同的Alamofire方法:

代码语言:javascript
复制
let parameters = ("username" : user, "password" : password)
Alamofire.request(.POST, "http://localhost:2406/users/login", parameters: parameters)

并从调用中完全删除.authentication :)

希望能帮上忙!

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

https://stackoverflow.com/questions/31856921

复制
相关文章

相似问题

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