SignalR - Nachricht Senden, um Benutzer mit UserID Anbieter
Mit SignalR, ich glaube, ich sollte in der Lage sein, Nachrichten zu senden, zu bestimmten angeschlossenen Benutzer mit UserID Anbieter
Hat jemand ein Beispiel, wie dies umgesetzt würde? Ich habe gesucht und gesucht und finde keine Beispiele. Ich brauchen würde, um das Ziel einer javascript-client.
Den Anwendungsfall ist, dass die Benutzer meiner Website ein Konto haben. Sie kann angemeldet werden, die von mehreren Geräten /Browsern. Wenn ein Ereignis passiert, dann möchte ich Ihnen eine Nachricht senden.
Du bist also verfolgen
Nein, ich habe nicht viel. Nur ein einfacher Hub-und javascript-Anschluss.
Dann würde ich vorschlagen, dass man einen genaueren Blick auf das Beispiel, das Sie miteinander verknüpft. Verwenden Sie eine Sammlung zu pflegen Benutzer-Namen und verbindungen, die Ihnen erlaubt, client aufrufen von Methoden auf bestimmte verbindungen.
Uhm ... vielleicht habe ich missverstanden Ihre Dokumentation. Früher konnte man noch manuell synchronisieren Sie Benutzer-ids und Verbindungs-ids und broadcast angemessen.Ich dachte, der Punkt der UserID Anbieter war zu beseitigen, das manuelle tracking. Ich dachte, es würde irgendwie wissen, wer der Benutzer war auf der Grundlage der die gleichen User, die die normale Authentifizierung verwendet.
Der Punkt ist genau, dass, wenn Sie den Benutzernamen, die Sie nicht haben, um zu verfolgen alles. Per default wird der user-name (wenn Sie mit irgendeiner form von "auth", setzt der AUFTRAGGEBER)
Context.User.Identity
und Context.ConnectionId
irgendwo? Wie ist Ihre Nutzung Fall unterscheidet sich von dem Beispiel in dem link, den Sie zur Verfügung gestellt?Nein, ich habe nicht viel. Nur ein einfacher Hub-und javascript-Anschluss.
Dann würde ich vorschlagen, dass man einen genaueren Blick auf das Beispiel, das Sie miteinander verknüpft. Verwenden Sie eine Sammlung zu pflegen Benutzer-Namen und verbindungen, die Ihnen erlaubt, client aufrufen von Methoden auf bestimmte verbindungen.
Uhm ... vielleicht habe ich missverstanden Ihre Dokumentation. Früher konnte man noch manuell synchronisieren Sie Benutzer-ids und Verbindungs-ids und broadcast angemessen.Ich dachte, der Punkt der UserID Anbieter war zu beseitigen, das manuelle tracking. Ich dachte, es würde irgendwie wissen, wer der Benutzer war auf der Grundlage der die gleichen User, die die normale Authentifizierung verwendet.
Der Punkt ist genau, dass, wenn Sie den Benutzernamen, die Sie nicht haben, um zu verfolgen alles. Per default wird der user-name (wenn Sie mit irgendeiner form von "auth", setzt der AUFTRAGGEBER)
InformationsquelleAutor hatcyl | 2014-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht sah in SignalR 2.0, aber ich denke, das ist eine Erweiterung von dem, was die vorherigen Versionen von SignalR verwendet zu haben. Wenn Sie eine Verbindung zu den hub-Sie können dekorieren es mit einer Autorisierung Attribut
Wie Sie sehen können, Sie sind in der Lage, den Zugriff auf die Identität des Benutzers, der Zugriff auf den Hub. Ich glaube, dass die neue Funktion nichts mehr als eine Verlängerung von diesem. Da die Verbindung ist immer am Leben gehalten, die zwischen dem client und dem hub haben Sie immer die prinzipiellen Identität, die Ihnen die UserId.
Nun, wie werden Sie sich in Ihrem Antrag? Sie haben jedes Stück, das die Authentifizierung?
Ich habe gelesen, bis auf diese. Für mein MVC und WebApis ich habe ein HttpModule, die nicht Basic-Auth und stellt den AUFTRAGGEBER von dort aus. Dies ist gut für die APIs und Views im MVC. Ich bin jedoch zu Lesen, dass mit dem SignalR-verbindungen denke ich, dass diejenigen, Authorization-Header nicht gesendet werden. Damit kann die zugrunde liegende Problem, das ich mich vor.
Es sollte keinen Grund geben, dass dein Hub nicht in der Lage wäre zu verwenden. Haben Sie die GlobalHost.HubPipeline.RequireAuthentication ();, um Ihre globalen.asax oder wo auch immer Sie sich registriert haben, Ihre hub?
Noch nicht ausprobiert, aber wird. Allerdings sollte ich nicht müssen "erforderlich" ist es Recht? Ich sollte in der Lage sein, sowohl genehmigtes als auch Anonyme Benutzer?
InformationsquelleAutor Gjohn
Ich glaube das kann dir helfen: (verlinkt von hier)
Einen bestimmten Benutzer, identifiziert durch userId.
Dass die Benutzer-id kann ermittelt werden aus der IUserId Schnittstelle:
Die default-Implementierung von
IUserIdProvider
istPrincipalUserIdProvider
. Die Verwendung dieser Standard-Implementierung, melden Sie sich zuerst imGlobalHost
wenn die Anwendung startet:Der Benutzername kann dann bestimmt werden, indem in der Request-Objekt vom client.
Sie nicht haben, um es zu überschreiben, denn es ist
als dfowler sagt keine Notwendigkeit, dies zu tun : "die Verwendung dieser Standard-Implementierung, melden Sie sich zuerst im GlobalHost beim starten der Anwendung:" als der Standard.
InformationsquelleAutor mrtig