我有一个要求,我们允许用户访问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"]