I know this question is posted many times, but I am still overwhelmed.
I am using Identity in my ASP.NET MVC Project.
Note: My project is not completely an SPA but something in between, so I need the user to simply go to the "home page" if he/she is not logged-in.
But by using the "Authorize" attribute, there would always be a "ReturnUrl" appended as a query string.
According to what I read in the link below, there is no easy configuration for this matter:
Simple way to remove ReturnUrl - GitHub
And I couldn't find out where should I add the code mentioned in the above link, which is:
.AddCookie(options =>
So what I did as a workaround:
services.ConfigureApplicationCookie(options =>
{options.LoginPath = new PathString("/notsignedin");
});
and then created its action, and what this action does is to redirect the user to the "home page" without the "ReturnUrl" query string. The code is as follows:
[Route("notsignedin")]
public IActionResult NotSignedIn()
{
return RedirectToAction("Index");
}
Although it works, but I don't really like it because it redirects the user twice.
Since I'm a beginner I am not really aware of all the features available in ASP, so I appreciate any help.
I found the solution finally after several months.
Note, the question was created with .net5 but the answer is .net6, there is not much difference!
This is the code I should have added to change the "challenge" functionality:
builder.Services.ConfigureApplicationCookie(options =>
{
options.Events.OnRedirectToLogin = opt =>
{
opt.HttpContext.Response.Redirect("/login");
return Task.FromResult(0);
};
});
The return Task.FromResult(0);
part is added because a Task should have been returned.
Please tell me if there is a better approach.