允许用户在操作之间登录/签名



我有一个要求,我们允许用户访问URL而无需登录直到某个点。例如:

在线书/服务。他们可以选择服务,这将填充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
            }
     }

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

我的个人喜好是甚至不重新定向用户。如果您需要登录,请弹出一个对话框,要求它们登录。用户登录(AJAX)后,启用按钮继续。

不确定这是否是最佳实践,但是在重定向到登录页面之前,将视图模型存储在会话中呢?然后在确认操作的开头,检查该会话变量是否存在。

可以这样设置会话变量:

Session["MyViewModel"] = viewModel;

并像这样检索:

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

相关内容

  • 没有找到相关文章