为什么Context.User.Identity.Name总是空的?
本文关键字:Name Context User Identity 为什么 | 更新日期: 2023-09-27 18:15:43
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);
}
出现这种情况是因为您没有要求对该操作进行身份验证。
通过使用Authorize
属性类对用户进行装饰,要求授权用户执行该操作——这将启动身份验证协商。我从来没有尝试过webform,但它应该工作,如果你在web配置中添加这个规则:
<authentication mode="Forms" />
尝试在Page_Load事件中调用它,您可能调用得太早了。
您创建cookie的方式,它不是一个身份验证cookie。如果创建新的Asp.net web窗体项目,Asp.net将为您处理身份验证过程。但是,如果您想创建自己的身份验证cookie,则必须遵循以下步骤。
来自asp.net的FormsAuthenticationModule通过检查认证票据对用户进行身份验证。你的饼干只有一个名字。你必须创建票。