在身份验证过期时使用自己的重定向 URI



我得到了这个需要对用户进行身份验证的操作。

[HttpGet]  
[Authorize]
public async Task<IActionResult> Index(string returnUrl)
{
var vm = await CreateViewModel(returnUrl);
return View(vm);
}

现在,我已经为登录会话的用户设置了超时,但从上面的操作视图中。它会将用户重定向到我的应用程序上不存在的页面。 所以我找到了事件:OnRedirectToLogin但我无法从context操作中找到任何相关内容Index用户来自哪里,以便我可以决定将用户重定向到哪里。

services.AddAuthentication("Cookies")
.AddCookie(options =>
{
options.Cookie.Name = "Cookies";
options.ExpireTimeSpan = TimeSpan.FromMinutes(1);
options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = (context) =>
{
return Task.CompletedTask;
}
};
})

是否可以存储/发送操作returnUrlIndex登录到期时OnRedirectToLogin

更新视图:

<form asp-action="">
@Html.HiddenFor(c => c.ReturnUrl)
....
<div class="button-section">
<button name="button" value="no" type="submit">Cancel</button>
<button name="button" value="yes" type="submit">Ok</button>
</div>
</form>

您可以在 RedirectContext 中访问请求和查询参数。在那里,您可以读取 returnUrl 参数并执行重定向。

options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = context =>
{
var returnUrl = context.Request.Query["returnUrl"];
context.Response.Redirect(returnUrl);
return Task.CompletedTask;
}
}

最新更新