簡體   English   中英

如何覆蓋 ASP.NET CORE MVC 中的默認身份訪問拒絕路由

[英]How to override default Identity AccessDenied route in ASP.NET CORE MVC

我想返回 403 狀態代碼或自定義 AccessDenied 視圖(尚未決定)而不是Identity/Account/AccessDenied?ReturnUrl=%2F頁面。 但我只是不知道該怎么做,因為它是默認配置並且在后台工作。
我的應用程序的上下文:
我有 3 個角色:超級管理員、管理員和客戶。 因此,如果用戶嘗試訪問未經授權的控制器/操作,那么我想拋出相應的 403 狀態代碼或客戶訪問被拒絕視圖。
我是 Identity 的新手,所以我只知道如何自定義我的 IdentityUser 並使用登錄/注冊/注銷和用戶角色的基礎知識。 所以請耐心等待我或嘗試盡可能簡單地解釋這些概念,以便像我這樣的猴子能夠正確理解它。
我將附上我的 Dependecy Injection 容器代碼,以備不時之需。

public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllersWithViews();
            services.AddRazorPages()
                    .AddRazorRuntimeCompilation();

            services.AddDbContextPool<RealStateDbContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("Standard")));

            services.AddIdentity<AppUser, IdentityRole>()
                    .AddEntityFrameworkStores<RealStateDbContext>()
                    .AddDefaultUI()
                    .AddDefaultTokenProviders();

            services.Configure<IdentityOptions>(options =>
            {

                //add this option to identity configuration
                options.User.RequireUniqueEmail = true;
                options.Password.RequiredLength = 1;
                options.Password.RequireDigit = false;
                options.Password.RequiredUniqueChars = 0;
                options.Password.RequireLowercase = false;
                options.Password.RequireNonAlphanumeric = false;
                options.Password.RequireUppercase = false;
            });
}

我正在研究 asp.net 核心 mvc 3.1,我正在嘗試重構腳手架標識代碼,因此它可以使用最低限度/無 razor 頁面技術(盡可能使用 mvc)。

如果你想有一個自定義頁面,你應該能夠配置哪個 URL 在用戶嘗試訪問禁止路徑時將其重定向到。 使用默認身份配置,您可以通過應用程序 cookie 設置進行調整,如下所示:

services.ConfigureApplicationCookie(options =>
{
    options.AccessDeniedPath = "/MyHttpStatuses/AccessDenied";
});

然后你可以像往常一樣創建你的 Razor 頁面:

// /Pages/MyHttpStatuses/AccessDenied.cshtml
@page

<h2>Access Denied!</h2>
<p>Damn, looks like you're not important enough. Sorry.</p>

現在,您應該被重定向到您的自定義 URL 並像處理普通頁面一樣處理該重定向。 注意:如果您不想,則不需要更改重定向 URL,但這只是一個示例。 或者,您可以將其保留為默認值,並在 /Pages/Identity/Account/AccessDenied.cshtml 下創建您的Razor頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM