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

ASP.NET Core 2.2 + Identity:如何将访问拒绝重定向至自定义页面?

解决ASP.NET Core 2.2 Identity自定义访问拒绝页面的配置问题

我来帮你搞定这个问题!在ASP.NET Core 2.2结合Identity的项目中,要让访问被拒绝时跳转到自定义页面,只需要完成以下几个关键步骤:

1. 准备自定义访问拒绝页面

首先你需要创建对应的页面文件:

  • 如果你用的是MVC模式:在Views/Account目录下新建AccessDenied.cshtml视图文件,同时在AccountController中添加对应的Action方法:
    public class AccountController : Controller
    {
        // 处理访问拒绝请求的Action
        public IActionResult AccessDenied()
        {
            // 可选:获取ReturnUrl并传递到视图,方便用户后续跳转
            ViewData["ReturnUrl"] = Request.Query["ReturnUrl"];
            return View();
        }
    }
    
  • 如果你用的是Razor Pages模式:直接在Pages/Account目录下新建AccessDenied.cshtml页面即可,不需要额外的控制器。

2. 配置Identity的Cookie选项

在Startup.cs的ConfigureServices方法中,找到Identity的注册代码,添加ConfigureApplicationCookie来指定访问拒绝页面的路径:

public void ConfigureServices(IServiceCollection services)
{
    // 你的Identity基础注册代码
    services.AddIdentity<IdentityUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    // 配置Cookie授权选项,指定访问拒绝页面路由
    services.ConfigureApplicationCookie(options =>
    {
        // 设置自定义访问拒绝页面的路径
        options.AccessDeniedPath = "/Account/AccessDenied";
        // 可选:配置其他Cookie相关路径,比如登录、登出
        options.LoginPath = "/Account/Login";
        options.LogoutPath = "/Account/Logout";
        // 还可以按需配置Cookie过期时间、名称等
        options.ExpireTimeSpan = TimeSpan.FromMinutes(30);
    });

    // 其他服务配置...
}

3. 验证配置生效

完成以上步骤后,重新运行项目,当用户访问无权限的资源时,就会自动跳转到你配置的/Account/AccessDenied页面,而不是出现404错误了。另外要注意:

  • 确保页面路径和配置中的AccessDeniedPath完全一致,Azure等Linux环境是大小写敏感的,这点要留意
  • 如果项目使用了Area,需要在路径中加上Area前缀,比如"/Admin/Account/AccessDenied"

内容的提问来源于stack exchange,提问作者Simone Spagna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:06:26