心声nj 2020-11-01 12:22 采纳率: 0%
浏览 129

登录以后 跳首页的过滤器中写入了Cookie信息,第一次进去没有读到Cookie,要刷新一下。

过滤器代码
public override void OnActionExecuting(ActionExecutingContext context)
{
try
{
//获取cookies中的WeChatId
//context.HttpContext.Response.Cookies.Delete("WeChatId");
context.HttpContext.Request.Cookies.TryGetValue("WeChatId", out string weChatId);

                //当前访问的控制名称
                //string controller_Name = context.Controller.GetType().Name.ToLower();
                WeChatUser user = null;
                if (string.IsNullOrEmpty(weChatId))
                {
                    //如果没有openid,则重新获取
                    string code = context.HttpContext.Request.Query["code"];
                    _logger.LogError("微信过来的code"+code);
                    WebAccessToken token = WeChatBillsTools.GetOpenId(code);
                    if (token != null)
                        weChatId = token.openid;

                    if (string.IsNullOrEmpty(weChatId)) weChatId = "o_XGiuAAEHRnX-mTkRLhc7lRzorQ";
                    context.HttpContext.Response.Cookies.Append("WeChatId", weChatId);
                }
                user = _weChatUserService.ValidWeChatUser(weChatId);
                //如果未绑定,
                if (user == null)
                    //结束当前直接跳转到登录页面
                    context.Result = new RedirectResult("/Account/Index");
                else
                {
                    //如果取到数据了,就放入cookie
                    UsersModel userCookie = new UsersModel
                    {
                        WeChatId = weChatId,
                        UserId = user.UserID,
                        LabCode = user.LabCode,
                        LogId = user.LogID,
                        LogPwd = user.PassWord,
                        Nickname = user.Nickname,
                        DeptId = user.DeptID,
                        DeptName = user.DeptName,
                        Tel = user.Tel,
                        UserType = user.UserType
                    };
                    context.HttpContext.Response.Cookies.Delete(weChatId + "Token");
                    context.HttpContext.Response.Cookies.Append(weChatId + "Token", Common.Extension.SerializerJson.SerializeObject(userCookie));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            base.OnActionExecuting(context);
        }

登录完成后
///
///
///
///
[ServiceFilter(typeof(MyActionFilterAttribute))]
public IActionResult Index()
{

        string wechatId = GetCookies("WeChatId");
        TempData["user"]  = SerializerJson.DeserializeObject<UsersModel>(GetCookies(wechatId + "Token"));

        return View();
    }
            这里第一次进来读不到Cookie信息 ,需要刷新一下才有。
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
    • ¥15 Attention is all you need 的代码运行
    • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
    • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
    • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
    • ¥30 关于<main>标签页面跳转的问题
    • ¥80 部署运行web自动化项目
    • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
    • ¥30 VMware 云桌面水印如何添加
    • ¥15 用ns3仿真出5G核心网网元