我想返回403状态代码或自定义AccessDenied视图(尚未决定)而不是Identity/Account/AccessDenied?ReturnUrl=%2F
页面。但是我只是不知道该怎么做,因为它是默认配置并且可以在后台运行。
我的应用程序上下文:
我有3个角色:SuperAdmin,Admin和Customer。因此,如果用户尝试访问未经授权的控制器/操作,那么我想抛出相应的403状态代码或客户访问被拒绝的视图。
我是Identity的新手,所以我只知道如何自定义IdentityUser并使用Login / SignUp / LogOut和用户角色的基础知识。因此,请耐心等待我或尝试解释尽可能简单的概念,以便像我这样的猴子能够正确理解它。
如果有人需要,我将附加我的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,并且正在尝试重构脚手架身份代码,因此它可以与剃刀页面技术(最低限度为mvc)配合使用(最低限度)。
如果您想拥有一个自定义页面,则应该能够配置用户尝试访问禁止路径时将用户重定向到的URL。使用默认的Identity配置,您可以通过应用程序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页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句