如何将jwt从swift客户端传递到node.js服务器



我想将jwt从swift客户端传递到node.js websocket服务器进行身份验证。我已经在swift中实现了本地websocket客户端。我为node.js客户端找到了一些解决方案,他们在其中这样做-

WebSocket = require 'ws'
ws = new WebSocket 'ws://localhost:8000',{
headers : {
token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaW9zdHJlYW1lciJ9.oNx-4e9hldyATpdPZghd_sjX8DhTkQFVDBxIhKh4MC4"
}
}

那么我怎么能在swift客户端上做这件事呢?我也试图在swift中像上面一样通过,但给了我错误。

如果您正在寻找一个在iOS中使用WebSockets的库,请查看这一点。

然后,您可以在URLRequest本身中添加标题:

(来自图书馆页面上的示例(

var request = URLRequest(url: URL(string: "http://localhost:8080")!)
/// YOU WANT THIS
request.addValue("TOKEN", forHTTPHeaderField: "Authorization")
/// YOU WANT THIS
request.timeoutInterval = 5
socket = WebSocket(request: request)
socket.delegate = self
socket.connect()

我建议在示例中提到的Authorization标头中发送令牌,因为这是一种标准做法。但是,如果您想将其作为Node.js示例发送,请将Authorization替换为token

以及带有您要发送的令牌的TOKEN

编辑即使您没有使用此库,过程也是类似的。

我得到了答案,它很简单,我不能把整个代码放进去,但你们理解这个-

var webSocketTask: URLSessionWebSocketTask!
var url = URLRequest(url: URL(string: "ws://localhost:8000")!)
url.addValue("Your_Jwt_Token", forHTTPHeaderField: "Authorization")
webSocketTask = urlSession.webSocketTask(with: url)

或者,如果你想通过协议传递jwt_Token,那么你可以这样做-

webSocketTask = urlSession.webSocketTask(with: URL(string: "ws://localhost:8000")!, protocols: ["Your_Jwt_Token"])

以上结果产生以下标题-

Sec-WebSocket-Protocol: "Your_jwt_Token"

最新更新