Asp.Net Core Identity中RedirectToAction跳转returnUrl报404问题
问题根因
重定向失效是因为错误使用了RedirectToAction方法:
RedirectToAction的设计用途是跳转到站内指定的控制器动作,入参需要传入Action名称、控制器名称等参数,框架会基于当前路由上下文拼接生成目标地址- 你直接把URL路径(
/、/Admin)作为Action名传入,框架会默认把这些值当成当前Account控制器下的Action名拼接,最终生成/Account/%2F、/Account/%2FAdmin这类不存在的地址,触发404错误。
修复方法
登录成功后的重定向逻辑改用Redirect方法实现,该方法支持直接传入目标URL路径完成跳转:
if (result.Succeeded) { return Redirect(returnUrl ?? "/"); }
安全优化
直接使用用户传入的returnUrl存在开放重定向攻击风险,恶意用户可以构造参数把登录后的用户诱导到钓鱼站点,建议跳转前用内置方法校验地址是否属于本站:
if (result.Succeeded) { if (Url.IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } // 非本站地址默认跳转至首页 return RedirectToAction("Index", "Home"); }
内容的提问来源于stack exchange,提问作者egeo
相关产品推荐
相关产品推荐

