User.Identity.IsAuthenticated 当我尝试通过 IP 地址访问时为 false
User.Identity.IsAuthenticated is false when I try to access through IP address
我在 Windows 上将网站发布到 IIS 10. 如果我尝试通过 url http://localhost 的表单登录网站,我可以访问系统。但是,如果我尝试通过 url http://10.0.0.101 登录,则登录后 User.Identity.IsAuthenticated 为 false,用户为 IGenericPrincipal 而不是预期的 IMyPrincipal。 Web 是用 MVC5 编写的。
代码段:
...登录
FormsAuthenticationTicket authTicketF = new FormsAuthenticationTicket(1, user.Username, DateTime.Now, DateTime.Now.AddMinutes(60), false, userData);
string encTicketF = FormsAuthentication.Encrypt(authTicketF);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicketF) { Secure = true };
Response.Cookies.Add(faCookie);
...基地控制器
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (User == null || !User.Identity.IsAuthenticated)
{
filterContext.RequestContext.HttpContext.Response.Redirect("/Login", true);
}
}
解决方案,在这种情况下,网站 运行 仅在 HTTP 而不是 HTTPS 上。
我不得不将 Secure 属性更改为 false。
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicketF) { Secure = false };
现在可以使用了。
我在 Windows 上将网站发布到 IIS 10. 如果我尝试通过 url http://localhost 的表单登录网站,我可以访问系统。但是,如果我尝试通过 url http://10.0.0.101 登录,则登录后 User.Identity.IsAuthenticated 为 false,用户为 IGenericPrincipal 而不是预期的 IMyPrincipal。 Web 是用 MVC5 编写的。
代码段:
...登录
FormsAuthenticationTicket authTicketF = new FormsAuthenticationTicket(1, user.Username, DateTime.Now, DateTime.Now.AddMinutes(60), false, userData);
string encTicketF = FormsAuthentication.Encrypt(authTicketF);
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicketF) { Secure = true };
Response.Cookies.Add(faCookie);
...基地控制器
protected override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (User == null || !User.Identity.IsAuthenticated)
{
filterContext.RequestContext.HttpContext.Response.Redirect("/Login", true);
}
}
解决方案,在这种情况下,网站 运行 仅在 HTTP 而不是 HTTPS 上。 我不得不将 Secure 属性更改为 false。
HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicketF) { Secure = false };
现在可以使用了。