4

私は SignalR で遊んでいますが、パブリック チャットとセキュア チャットのデモ アプリを構築するための認証を把握できないようです。チャット ルームが 1 つあり、認証されたユーザーがパブリック メッセージ認証されたユーザー メッセージを受信することを示したいと思います。認証は、 のストック MVC(3) インターネット アプリを使用して行われAccountControllerます。

接続 ID がないため、コントローラ内で Hub コンテキストを取得しても意味がありません。「安全なチャット」のグループに特定の接続を追加するための接続 ID を取得するにはどうすればよいですか? コントローラーで行う必要がありますか?または、ハブ内でそれを行う方法がありませんか?

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            var context = GlobalHost.ConnectionManager.GetHubContext<Chat>();
            // add to signalr secure group
            // but no connection id here
4

2 に答える 2

7

私は明白で十分に文書化されたものを見落としていましたユーザーが通常どおり認証されると、Hub派生クラスは認証を確認できるようになります。

public class Chat : Hub
{
    public void send(string message)
    {
        Clients.addMessage(message);
    }

    public void securesend(string message)
    {
        if (this.Context.User.Identity.IsAuthenticated)
        {
            // might not yet be a part of the "secured" group
            Groups.Add(this.Context.ConnectionId, "secured");
            Clients["secured"].addMessage("[SECURED] " + message);
        }
    }
}
于 2012-11-14T23:38:58.743 に答える
4

すぐに承認に使用できる便利な組み込み属性があるため、SignalR の最新バージョンを確認してください。

http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx

于 2012-11-16T04:21:19.617 に答える