Asp.Net Core MVC控制器重定向Razor登录页URL异常问题排查
解决Asp.Net Core MVC重定向到Identity登录页的路径问题
你的问题出在RedirectToAction的用法上,这个方法是用来跳转控制器动作的,你直接传入Identity/Account/Login这种路径,框架会把它当成当前控制器下的一个动作名,所以才会带上MyController前缀。
给你两个靠谱的解决方法:
方法1:用Redirect直接指定路径
直接用Redirect方法传入根相对路径,它会直接跳转到指定URL,不会拼接当前控制器:
[HttpPost] public IActionResult SecretQuestionSetup(SecretQuestionVM secretQuestionVM) { if (ModelState.IsValid) { // 保存数据到数据库的代码 } return Redirect("/Identity/Account/Login"); }
方法2:用RedirectToPage适配Razor页面
因为Identity的登录页是Razor页面,用RedirectToPage更贴合场景,需要指定Area和页面路径:
[HttpPost] public IActionResult SecretQuestionSetup(SecretQuestionVM secretQuestionVM) { if (ModelState.IsValid) { // 保存数据到数据库的代码 } return RedirectToPage("/Account/Login", new { Area = "Identity" }); }
另外你之前在Program.cs里配置的LoginPath,是给Cookie认证中间件用的——当用户未授权访问需要登录的资源时,框架会自动跳转到这个路径,和你手动写的重定向逻辑没关系,所以改它解决不了当前问题。
内容的提问来源于stack exchange,提问作者Massey
相关产品推荐
相关产品推荐

