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 };

现在可以使用了。