geheime oder öffentliche Schlüssel bereitgestellt werden muss - IOS/Swift - + - Sockel.io-JWT
Mein Ziel ist sehr einfach, die Authentifizierung des Benutzers über socket.io-jwt. So, ich könnte manipulieren, seine/Ihre Daten in Echtzeit.
Clientseitiger code
import SocketIOClientSwift
import KeychainAccess
class SocketIOManager: NSObject {
static let sharedInstance = SocketIOManager()
//1
let keychain = Keychain(server: "https://testing.herokuapp.com", protocolType: .HTTPS)
//2
var token: String {
get {
if let realToken = keychain["token"] {
return String(realToken)
} else {
return ""
}
}
}
//3
lazy var socket: SocketIOClient = SocketIOClient(socketURL: NSURL(string: "https://testing.herokuapp.com")!,
options: [.Log(true), .ConnectParams(["token": self.token])])
override init() {
super.init()
}
func establishConnection() {
socket.connect()
}
func closeConnection() {
socket.disconnect()
}
}
Einfach für Euch zu verstehen,
- Schlüsselanhänger Zweck ist nur zum speichern der token, lassen Sie uns sagen, dass ich bereits gespeichert
das token vom Benutzer, der sich anmeldet, dann werde ich einfach tun
keychain["token"] = "token"
, lässt vermuten, dass das token wurde
gespeichert var token
ist, um die token, weil derzeit Schlüsselbund speichern
die token optional, damit muss ich tun, optional mit Bindung.- Schließlich instanziiere ich ein socket-Objekt, so dass ich übergeben Sie das token
als parameter, viele Menschen empfehlen, dies zu tun
.ConnectParams(["token": self.token])
So weit so gut, aber jetzt, immer wenn ich versuche zum herstellen einer Verbindung mit einer app delegieren ,
AppDelegate.Swift
func applicationDidBecomeActive(application: UIApplication) {
//Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
SocketIOManager.sharedInstance.establishConnection()
}
Ich erhielt
Handling event: error with data: (
{
code = "invalid_token";
message = "secret or public key must be provided";
type = UnauthorizedError;
} )
Zur Klarheit, ich will nicht zählen der serverseitige code, weil Es nur einen Standardcode aus diesem https://github.com/auth0/socketio-jwt
So, die eigentliche Frage ist, was habe ich falsch gemacht??
InformationsquelleAutor airsoftFreak | 2016-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie Sie nicht ein Geheimnis in Ihren server-Implementierung:
socketioJwt.authorize({
secret: 'some secret here', //<--
handshake: true
})
Die variable, dass ich falsch war
Ich habe noch eine Frage für Sie, wenn ich erhielt
socket: [object Object]
würde, wie bekomme ich die Daten? wie first_name und so weiter. Denn immer, wenn ich versuche zu trösten.melden Siesocket.decoded_token.first_name
es zeigtundefined
Gelöst ist es schon.
kein problem! gerne helfen
InformationsquelleAutor Wilson