在控制器内SignalR认证?(SignalR authentication within a Co

2019-08-02 17:34发布

我玩SignalR,我似乎无法把握验证来建立一个演示应用程序的公共VS安全聊天。 有一个聊天室,我想证明身份验证的用户将获得公共信息身份验证的用户信息。 认证是使用股票MVC(3)在互联网应用做AccountController

获取控制器内的中心范围内没有任何意义,因为它没有连接ID。 我怎样才能获得的连接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

Answer 1:

完全可以俯瞰明显,有据可查。 一旦用户被认证为正常, 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);
        }
    }
}


Answer 2:

确保你看看SignalR的最新版本,因为我们有很好的内置属性,你现在可以使用进行授权。

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



文章来源: SignalR authentication within a Controller?