[英]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.