重定向到ACS并返回后,Cookie在极少数情况下为空

 迷蒙的天蝎 发布于 2023-02-12 18:06

在我的网站上,有一个注册表.填写完成后,用户将被重定向到Azure ACS以便登录.登录后,用户将被重定向回我的网站并进行注册和登录.

注册表由JavaScript提交.用户填写的信息通过RegisterController中的RedirectToProvider方法保存到cookie中,用户被重定向到ACS.当用户从ACS重定向回网站时,然后通过RegisterController中的RegisterUser方法读取cookie.问题是:这在95%的时间都有效.5%的时间,当用户回来时,cookie为空.我一直无法追踪原因,我想知道是否有任何已知的问题或我可能会监督的事情.表单代码如下所示:

@using (Html.BeginForm("RedirectToProvider", "Register", FormMethod.Post, new { id = "registerForm" }))

    ... various fields...

    
}

提交表单的RegisterRedirect()JavaScript(此处省略了相关的功能):

var RegisterRedirect = function () {
    $("#registerForm").valid();
    $("#registerForm").submit();
}

RegisterController中的RedirectToProvider方法:

[AllowAnonymous]
[HttpPost]
public ActionResult RedirectToProvider(RegisterViewModel viewModel)
{
    if (ModelState.IsValid)
    {
        var providerUrl = viewModel.SelectedProviderUrl;
        viewModel.SelectedProviderUrl = "";

        var json = JsonConvert.SerializeObject(viewModel);

        try
        {
            var cookie = new HttpCookie("RegisterViewModel", json)
                {
                    Expires = DateTime.Now.AddMinutes(10)
                };
            ControllerContext.HttpContext.Response.Cookies.Add(cookie);
        }
        catch (FormatException)
        {
            return RedirectToAction("Index", "Error", new { reason = "Cookie saving error." });
        }
        return Redirect(providerUrl);
    }
    return RedirectToAction("Index", "Error", new { reason = "Invalid data. Try again." });
}

用户被重定向到ACS并选择使用例如Gmail登录.ACS回调我的ClaimsAuthenticationManager(在web.config中配置).然后,调用要回调的方法(在ACS中配置),然后调用应该读取cookie的RegisterUser方法:

[Authorize]
public ActionResult RegisterUser(User user){
    var cookie = ControllerContext.HttpContext.Request.Cookies["RegisterViewModel"];
    if (cookie != null){
        ... registers the user...
    }
}

95%的情况下,cookie不为空.5%的时间,某些内容失败,cookie为空.Azure模拟器刚刚启动后,在网站的第一次构建期间失败率较高,之后降低.我读过它可能与会话有关.有没有人看到明显的错误或有任何建议?在此先感谢您的帮助!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有