使用 ASP.NET Core Identity 时,如何在 ASP.NET Core Web 应用程序模板中限制访问
How is access restricted in the ASP.NET Core web app template when using ASP.NET Core Identity
我有一个 ASP.NET Core 5 网络应用程序,它使用 ASP.NET Core Identity 进行授权。我搭建了所有 Identity UI 的脚手架,这样我就可以看到它是如何工作的。
在“身份”区域的脚手架 Razor 页面中,我可以看到几个用 [AllowAnonymous]
装饰的页面模型 类,但我看不到任何对 限制访问。
不过,肯定有什么地方,因为模板网站中的某些页面在未登录时可以访问(即使它们没有 [AllowAnonymous]
),但脚手架中的大多数页面 Identity
区域 不可 访问,除非登录。
这是如何实现的?我希望看到对 AuthorizeFolder
(或 AuthorizeAreaFolder
)的调用,但我在项目中的任何地方都看不到。
我想添加一些我自己的授权规则,但我想在开始进行更改之前了解现有规则是什么。
保持对身份 UI 的完全控制,运行 身份脚手架和 select 覆盖所有文件。
您可能希望执行此操作以完全控制身份 UI。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
}
参考:Create full Identity UI source
我有一个 ASP.NET Core 5 网络应用程序,它使用 ASP.NET Core Identity 进行授权。我搭建了所有 Identity UI 的脚手架,这样我就可以看到它是如何工作的。
在“身份”区域的脚手架 Razor 页面中,我可以看到几个用 [AllowAnonymous]
装饰的页面模型 类,但我看不到任何对 限制访问。
不过,肯定有什么地方,因为模板网站中的某些页面在未登录时可以访问(即使它们没有 [AllowAnonymous]
),但脚手架中的大多数页面 Identity
区域 不可 访问,除非登录。
这是如何实现的?我希望看到对 AuthorizeFolder
(或 AuthorizeAreaFolder
)的调用,但我在项目中的任何地方都看不到。
我想添加一些我自己的授权规则,但我想在开始进行更改之前了解现有规则是什么。
保持对身份 UI 的完全控制,运行 身份脚手架和 select 覆盖所有文件。
您可能希望执行此操作以完全控制身份 UI。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<IdentityUser, IdentityRole>()
// services.AddDefaultIdentity<IdentityUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc()
.AddRazorPagesOptions(options =>
{
options.Conventions.AuthorizeAreaFolder("Identity", "/Account/Manage");
options.Conventions.AuthorizeAreaPage("Identity", "/Account/Logout");
});
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = $"/Identity/Account/Login";
options.LogoutPath = $"/Identity/Account/Logout";
options.AccessDeniedPath = $"/Identity/Account/AccessDenied";
});
// using Microsoft.AspNetCore.Identity.UI.Services;
services.AddSingleton<IEmailSender, EmailSender>();
}
参考:Create full Identity UI source