Mám úlohu Azure WebRole (aplikácia MVC) a Azure Worker.
Teraz mám hostiteľské uzly SignalR hostené v pracovnej úlohe pomocou nástroja Owin.SelfHost.
Aplikácia MVC musí tieto uzly nazývať pracovnou úlohou - čo je celkom jednoduché.
Teraz je mojím problémom autentifikácia.
Musím pristupovať k WebRole Context.User.Identity na webrole, aby som mohol stále autentifikovať hovory do svojich hubov.
Pracovná úloha
public class MyHub: Hub
{
public override Task OnConnected() {
var id = Context.User.Identity.Name; // NULL
var connectionId = Context.ConnectionId;
}
[Authorize]
public void SendMessage() ....
}
V súčasnej dobe som s tým
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.Run(async context =>
{
var userName = context.Request.Query["user"]; //NULL
var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationType);
identity.AddClaim(new Claim(ClaimTypes.Name, userName));
context.Authentication.SignIn(identity);
});
.....
});
}
Nejako musím odovzdať User.Context (Asp.net identity) z môjho WebRole Pipeline Owin v pracovnej úlohe.
Máte nejakú predstavu, ako to urobiť?
odpovede:
0 pre odpoveď č. 1implementácia SignalR na nižšie uvedenom odkaze by mala zodpovedať vašu otázku.
môžete sa bližšie pozrieť na atribút, ktorý zdobí triedu rozbočovačov, a pozrieť sa na implementáciu.
môžete sa tiež pozrieť na GetCurrentUserName v samotnej triede Hub.
https://github.com/louislewis2/AngularJSAuthentication
Louis