ASP.NET MVC2控制器无法识别身份验证票证

时间:2011-06-09 08:38:47

标签: asp.net asp.net-mvc-2 forms-authentication

我有一个使用自定义表单身份验证票证的Web应用程序。我正在使用自定义身份验证机制登录,并创建自定义身份验证票证。

然后,从Web应用程序中,我定期对MVC2控制器进行Ajax调用,询问用户是否经过身份验证。控制器方法如下所示:

public ActionResult GetAuthenticationStatus()
        {
            string responseDoc;

            if (HttpContext.User != null
                && HttpContext.User.Identity.IsAuthenticated)
            {
                responseDoc = "{\"status\":\"authenticated\"}";
            }
            else{
                responseDoc = "{\"status\":\"unauthenticated\"}";
            }

            return new ContentResult { Content = responseDoc, ContentType = "application/json" };

        }

IIS日志显示身份验证票证cookie已成功到达IIS,但我的控制器方法正在返回{\“status \”:\“unauthenticated \”}所以很明显我的控制器检查用户身份验证的条件不正确

特别是,它在Chrome中运行良好。但是,它在移动Safari中不起作用。任何人都可以看到我的控制器方法有什么问题吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我相信我有答案。您需要专门设置web.config以强制使用cookie。我在web.config中的身份验证设置现在如下所示:

<authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" 
             cookieless="UseCookies" 
             />
    </authentication>

解决问题的是cookieless =“UseCookies”条目。默认值为UseDeviceProfile。一定是iPad没有一致的UseDeviceProfile制度。