关于身份验证问题的 Swift 状态码 401
Posted
技术标签:
【中文标题】关于身份验证问题的 Swift 状态码 401【英文标题】:Status code 401 at swift about authentication issue 【发布时间】:2017-07-02 08:20:57 【问题描述】:全部 我无法通过 swift 在我的网络服务器上进行身份验证。 我可以通过 Postman 在我的网络服务器上进行身份验证。
这是邮递员
这是我的 swift。
class ViewController: UIViewController
let authLoginUrl = "http://ec2-52-79-171-171.ap-northeast-2.compute.amazonaws.com:8000/rest-auth/login/"
let keychain = Keychain(service: "wanote")
let tokenUse = "Token 869463aacc84f0fb9edfb251fa73b352fc52a4d5"
let projectUrl = "http://ec2-52-79-171-171.ap-northeast-2.compute.amazonaws.com:8000/api/user/ryulstory"
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if let Purl = URL(string: self.projectUrl)
var mutableUrlRequest = URLRequest(url: Purl)
mutableUrlRequest.setValue(self.tokenUse, forHTTPHeaderField: "Authorization")
mutableUrlRequest.httpMethod = "GET"
_ = Alamofire.SessionManager.default.request(mutableUrlRequest)
.responseJSON response in
print(response.request)
print(response.response)
print(response.data)
print(response.result)
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
我认为设置值可能是错误的。你能教我怎么回事吗?
【问题讨论】:
【参考方案1】:您是否将App Transport Security
和Allow Arbitrary Loads
插入YES
?进入你的Info.plist
?此 plist 修改允许 Apple 传输安全规则允许使用 200
HTTP 服务器进行请求。
【讨论】:
【参考方案2】:在mutableUrlRequest.setValue(self.tokenUse, forHTTPHeaderField: "Authorization")
中,您的self.tokenUse
应该是您的客户端ID。如果正确,为什么你的tokenUse
有“Token”前缀?
试试这个
let headers: HTTPHeaders = [
"Authorization": self.tokenUse,
"Accept": "application/json"
]
Alamofire.request("http://ec2-52-79-171-171.ap-northeast-2.compute.amazonaws.com:8000/api/user/ryulstory", headers: headers).responseJSON response in
debugPrint(response)
【讨论】:
我认为 forHTTPheaderField 与 key(Authorization) 相同,而 self.tokenUse 与 Postman 上的值相同。所以在邮递员的价值上它需要令牌前缀。 当你使用 Alamofire 时,你能用我编辑的答案再试一次吗?以上是关于关于身份验证问题的 Swift 状态码 401的主要内容,如果未能解决你的问题,请参考以下文章