代码之家  ›  专栏  ›  技术社区  ›  David B Arul Murugan.C

允许用户在操作之间登录

  •  1
  • David B Arul Murugan.C  · 技术社区  · 8 年前

    我有一个要求,我们允许用户在不登录到某个点的情况下访问URL。 例如:

    在线预订/服务。他们可以选择服务,这将填充viewmodel,然后打开confirm view OnlineBooking/confirm,允许用户添加电子邮件地址等,然后生成viewmodel。

    我的问题是,如果用户存在,我如何检查它。重定向到登录视图(帐户控制器-登录操作),允许他们登录,然后重定向回此操作,而不丢失此操作中的viewmodel?这甚至可能不可能,如果不可能的话,我怎么能做到这一点? 谢谢你的建议。

    例子:

         public async Task<IActionResult> Confirm(BookingViewModel bookingViewModel)
        {
            try
            {  
                var matchedUser = await _userManager.FindByEmailAsync(bookingViewModel.Email);
                if (matchedUser == null) //User does not have an existing account, so register them.
                {
                  //This is fine
                }
                else
                {
                  //Need to redirect to login, then back to here without losing the viewmodel
                }
         }
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   Erik Philips Gabriel Costa    8 年前

    我的问题是,如果用户存在,我如何检查它。重定向到登录视图(帐户控制器-登录操作),允许他们登录,然后重定向回此操作,而不会在此操作中丢失viewmodel

    我个人倾向于甚至不重定向用户。如果你需要他们登录,弹出一个对话框让他们登录。用户登录(ajax)后,启用按钮继续。。

        2
  •  0
  •   T. Piscaglia    8 年前

    不确定这是否是最佳做法,但在重定向到登录页面之前,如何在会话中存储视图模型?然后在确认操作开始时,检查该会话变量是否存在。

    会话变量可以这样设置:

    Session["MyViewModel"] = viewModel;
    

    这样检索:

    MyViewModel viewModel = (MyViewModel)Session["MyViewModel"]