为什么Context.User.Identity.Name始终为空?

时间:2016-11-01 11:18:46

标签: c# webforms httpcontext

Context.User.Identity.Name始终为空,目前我正在使用WebForms:

HttpCookie cookie = new HttpCookie("jamal");
cookie.Value = "bilal";
HttpContext.Current.Response.Cookies.Add(cookie);

我想要用户名:

public override Task OnConnected()
{
    AddUser(Context.User.Identity.Name, this.Context.ConnectionId);
}

private static void AddUser(String username, String connectionId)
{
    ISet<String> connections;

    if (users.TryGetValue(username, out connections) == false)
    {
        connections = users[username] = new HashSet<String>();
    }

    connections.Add(connectionId);
}

3 个答案:

答案 0 :(得分:1)

这是因为您尚未对此操作进行身份验证 要求用户通过使用Authorize属性类进行装饰来授权该操作,这将启动身份验证协商。 我从来没有尝试过使用webform,但是如果你在web配置中加入这条规则它应该可行:

<authentication mode="Forms" />

答案 1 :(得分:0)

尝试在Page_Load事件上调用它,你可能很快就会调用它。

答案 2 :(得分:0)

您创建Cookie的方式,它不是身份验证Cookie。如果您创建一个新的asp.net Web表单项目,Asp.net将为您处理身份验证过程。但是,如果您要创建自己的身份验证Cookie,则必须遵循these are the steps

来自asp.net的FormsAuthenticationModule通过检查身份验证票证来验证用户。您的cookie只有一个名称。您必须创建票证。 Also check this link