我有一个使用自定义表单身份验证票证的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中不起作用。任何人都可以看到我的控制器方法有什么问题吗?
感谢。
答案 0 :(得分:0)
我相信我有答案。您需要专门设置web.config以强制使用cookie。我在web.config中的身份验证设置现在如下所示:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"
cookieless="UseCookies"
/>
</authentication>
解决问题的是cookieless =“UseCookies”条目。默认值为UseDeviceProfile。一定是iPad没有一致的UseDeviceProfile制度。