You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 3.1 修改默认登录路径后如何禁止访问原/Login路径

解决方案

你配置的LoginPath仅用于指定未授权访问受保护资源时的自动跳转路径,本身不会自动禁用原有/Login路由的访问权限,需要额外配置实现禁用需求。

方案1:直接修改Login控制器的路由映射(推荐)

给Login控制器类加上路由特性,直接将控制器的访问路径绑定到/e-tol/Login,原有/Login路径会自动失效:

// 在LoginController类上添加该特性
[Route("e-tol/[controller]")]
public class LoginController : Controller
{
    // 原有动作方法无需修改
}

如果用的是传统全局路由配置,修改Program.cs里的路由规则,将Login控制器的匹配路径调整为e-tol/Login即可。

方案2:在登录页动作中添加路径校验

如果不想修改控制器路由,可以直接在现有的Index动作开头加路径校验逻辑,拦截非法路径访问:

public async Task<IActionResult> Index(string message)
{
    // 新增路径校验逻辑
    if (Request.Path.StartsWithSegments("/Login", StringComparison.OrdinalIgnoreCase))
    {
        // 可选择返回404
        return NotFound();
        // 也可以选择直接重定向到正确的登录路径
        // return Redirect("/e-tol/Login");
    }

    ViewBag.Message = message;

    if (HttpContext.User.Identity.IsAuthenticated) return RedirectAfterAuthenticated();

    await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);

    return View();
}

额外需修改的逻辑

你现有代码的RedirectAfterAuthenticated方法中,角色为null时的跳转逻辑还指向旧的Login路由,需要同步修改:

switch (role)
{
    case null:
        // 修改为正确的登录路径
        return Redirect("/e-tol/Login");
    default:
        return RedirectToAction("Index", "Home");
}

内容的提问来源于stack exchange,提问作者Himawan Sandhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:27:04