在使用ASP时删除ReturnUrl.净的身份



我知道这个问题已经贴了很多次了,但我仍然不知所措。

我在ASP中使用Identity。. NET MVC项目。

注意:我的项目不完全是一个SPA,但介于两者之间,所以我需要用户简单地去"主页"。如果他/她没有登录。

但是通过使用"Authorize"属性,总是会有一个"ReturnUrl"作为查询字符串追加。

根据我在下面的链接中看到的,这个问题没有简单的配置:

删除ReturnUrl的简单方法- GitHub

我找不到我应该在哪里添加上面链接中提到的代码,它是:

.AddCookie(options =>

所以我所做的作为一个解决方案:

  1. 根据ASP的默认行为。. NET标识,如果用户没有登录,用户将被重定向到一个操作。
  2. 我更改了"登录路径":
services.ConfigureApplicationCookie(options => 
{options.LoginPath = new PathString("/notsignedin");
});

,然后创建它的操作,这个操作的作用是重定向用户进入"主页"没有"ReturnUrl"查询字符串。的代码如下:

[Route("notsignedin")]
public IActionResult NotSignedIn()
{
return RedirectToAction("Index");
}

虽然它工作,但我真的不喜欢它,因为它重定向用户两次。

由于我是初学者,所以我并不真正了解ASP中可用的所有功能,所以我非常感谢您的帮助。

几个月后我终于找到了解决办法。

注意,这个问题是用。net5创建的,但答案是。net6,没有太大的区别!

这是我应该添加的代码来改变"challenge"功能:

builder.Services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = opt =>
{
opt.HttpContext.Response.Redirect("/login");
return Task.FromResult(0);
};
});

添加return Task.FromResult(0);部分,因为应该返回一个Task。

请告诉我是否有更好的方法。

相关内容

最新更新