我在MVC Web应用程序中登录了用户,但IsAuthenticated
类中的Hub
属性仍为false。这是我的登录和重定向序列:
Login
表单。FormsAuthenticationTicket
并使用FormsAuthentication
类加密票证。FormsAuthentication.FormsCookieName
路径中的响应Cookie。OnConnected
方法进行身份验证时,我发现它仍然是假的。我应该如何处理这个问题,我对SignalR 1.1中的授权没有任何问题,我使用的是相同的代码,但这次使用的是SignalR 2.0。
更新 实际上它在SignalR Hub类中仍然不是假的,它在整个应用程序域中都是错误的。
任何建议都会有所帮助。提前谢谢。
答案 0 :(得分:2)
如果你自己添加cookie,你也需要自己解决。
if(Login(model.UserName, model.Password)){
// ecrypt user data and add to cookie
// your code
}
// Global file code
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
// decrypt cookie and set current principal
// your code
Thread.CurrentPrincipal = HttpContext.Current.User = principal;
}
此外,如果传统的GenericPrincipal不适合,您需要一个客户主要类来存储用户信息。
答案 1 :(得分:0)
在Visual Studio 2013中,默认MVC模板使用ASP.Net Identity身份验证系统并将<authentication mode="None" />
放入web.config中,因此这会阻止应用程序创建HttpCookie
。我只需将其更改为<authentication mode="Forms" />
,现在它正在运行。