允许用户在操作之间登录/注册

时间:2017-12-06 20:26:22

标签: asp.net-mvc asp.net-mvc-5 asp.net-identity

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

OnlineBooking /服务。他们可以选择服务,这会填充视图模型,然后调出确认视图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 个答案:

答案 0 :(得分:1)

  

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

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

答案 1 :(得分:0)

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

会话变量可以像这样设置:

Session["MyViewModel"] = viewModel;

并像这样检索:

MyViewModel viewModel = (MyViewModel)Session["MyViewModel"]
相关问题