使用 ASP.NET 标识时删除 ReturnUrl
Remove ReturnUrl while using ASP.NET Identity
我知道这个问题已经发过很多次了,但我还是不知所措。
我在 ASP.NET MVC 项目中使用 Identity。
注意:我的项目不完全是 SPA,而是介于两者之间,所以如果 he/she 未登录,我需要用户简单地转到“主页”。
但是通过使用“Authorize”属性,总会有一个“ReturnUrl”附加为查询字符串。
根据我在下面的link中看到的内容,这件事没有简单的配置:
Simple way to remove ReturnUrl - GitHub
而且我找不到应该在哪里添加上面提到的代码link,即:
.AddCookie(options =>
所以我做了什么作为解决方法:
- 根据ASP.NET身份的默认行为,如果用户未登录,用户将被重定向到一个操作。
- 我这样修改了“登录路径”:
services.ConfigureApplicationCookie(options =>
{options.LoginPath = new PathString("/notsignedin");
});
然后创建了它的动作,这个动作所做的就是重定向
用户访问没有“ReturnUrl”查询字符串的“主页”。这
代码如下:
[Route("notsignedin")]
public IActionResult NotSignedIn()
{
return RedirectToAction("Index");
}
虽然有效,但我不太喜欢它,因为它会重定向用户两次。
由于我是初学者,所以我并不真正了解 ASP 中可用的所有功能,因此非常感谢您的帮助。
几个月后我终于找到了解决方案。
注意,题目是用.net5做的,答案是.net6,差别不大!
这是我应该添加以更改“挑战”功能的代码:
builder.Services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = opt =>
{
opt.HttpContext.Response.Redirect("/login");
return Task.FromResult(0);
};
});
添加了 return Task.FromResult(0);
部分,因为任务应该已经返回。
请告诉我是否有更好的方法。
我知道这个问题已经发过很多次了,但我还是不知所措。
我在 ASP.NET MVC 项目中使用 Identity。
注意:我的项目不完全是 SPA,而是介于两者之间,所以如果 he/she 未登录,我需要用户简单地转到“主页”。
但是通过使用“Authorize”属性,总会有一个“ReturnUrl”附加为查询字符串。
根据我在下面的link中看到的内容,这件事没有简单的配置:
Simple way to remove ReturnUrl - GitHub
而且我找不到应该在哪里添加上面提到的代码link,即:
.AddCookie(options =>
所以我做了什么作为解决方法:
- 根据ASP.NET身份的默认行为,如果用户未登录,用户将被重定向到一个操作。
- 我这样修改了“登录路径”:
services.ConfigureApplicationCookie(options =>
{options.LoginPath = new PathString("/notsignedin");
});
然后创建了它的动作,这个动作所做的就是重定向 用户访问没有“ReturnUrl”查询字符串的“主页”。这 代码如下:
[Route("notsignedin")]
public IActionResult NotSignedIn()
{
return RedirectToAction("Index");
}
虽然有效,但我不太喜欢它,因为它会重定向用户两次。
由于我是初学者,所以我并不真正了解 ASP 中可用的所有功能,因此非常感谢您的帮助。
几个月后我终于找到了解决方案。
注意,题目是用.net5做的,答案是.net6,差别不大!
这是我应该添加以更改“挑战”功能的代码:
builder.Services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = opt =>
{
opt.HttpContext.Response.Redirect("/login");
return Task.FromResult(0);
};
});
添加了 return Task.FromResult(0);
部分,因为任务应该已经返回。
请告诉我是否有更好的方法。