ここで最も簡単な方法は、oauth認証フラックス内のsignalRハブへの参照を取得し、この方法が正常に完了した後にグローバルシグナリングを起動することです。Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
。例えば
:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// auth and other stuffs removed for brevity
// ...
// ...
context.Validated(ticket);
// then here
var hub = GlobalHost.ConnectionManager.GetHubContext<IMessageHub>("MessageHub");
hub.Clients.All.ServerMessage(new {message = $"{context.UserName} is here!"});
}
このようなメッセージハブ付き:
public interface IMessageHub
{
void ServerMessage(object eventObject);
}
[HubName("MessageHub"), Authorize]
public class MessageHub : Hub<IMessageHub>
{
public MessageHub()
{
}
}
はそれが役に立てば幸い:)
まあ、クライアントが認証した後、サーバーに通知することもできます。サーバーは、他のすべてのクライアントにメッセージをブロードキャストすることができます(例えば、シグナルチャットのように) – alessalessio
@alessalessio - これは私が探しているものと同じです。 SignalRコールをWeb APIの認証に追加するにはどうすればよいですか? jQuery呼び出しを認証するHTMLページには、SignalRチャットのようなSignalRスクリプトが含まれていなければなりませんか?サンプルコードがありますか? – webworm
クライアントがどのように認証されているかは不明ですが、Web APIと同じプロジェクトでOAuthを使用して認証されていますか? Microsoft.Owin.Security.OAuthを使用していますか? –