如何为MVC .Net Core应用程序创建单个管理员用户

乔·希格利

我正在构建一个本质上是商店的Web应用程序,但是我想以一种简单的方式让网站管理员添加新产品。但是,我想限制网站的这一部分,以便只有管理员才能访问它。目前我没有其他用户使用。

我该如何做,以便具有管理员用户名和密码的任何人都可以访问这些页面,并且它将始终知道它们已登录?我已经有一个可以接受用户输入的系统,如果正确的话,可以继续进入管理页面。但是问题是,如果有人决定直接直接转到Admin / AddProduct之类的页面。我需要我的应用程序知道他们尚未被允许访问AddProduct页面,并将其重定向回登录名。

主题拉朱莫克

这就是你的做法乔伊

通过CreateRolesstartup类中创建一个方法,您可以轻松地做到这一点这有助于检查是否创建了角色,如果没有创建则创建角色。在应用程序启动时。像这样

private async Task CreateRoles(IServiceProvider serviceProvider)
    {
        //initializing custom roles 
        var RoleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
        var UserManager = serviceProvider.GetRequiredService<UserManager<ApplicationUser>>();
        string[] roleNames = { "Admin", "Store-Manager", "Member" };
        IdentityResult roleResult;

        foreach (var roleName in roleNames)
        {
            var roleExist = await RoleManager.RoleExistsAsync(roleName);
            // ensure that the role does not exist
            if (!roleExist)
            {
                //create the roles and seed them to the database: 
                roleResult = await RoleManager.CreateAsync(new IdentityRole(roleName));
            }
        }

        // find the user with the admin email 
        var _user = await UserManager.FindByEmailAsync("[email protected]");

       // check if the user exists
       if(_user == null)
       {
            //Here you could create the super admin who will maintain the web app
            var poweruser = new ApplicationUser
            {
                UserName = "Admin",
                Email = "[email protected]",
            };
            string adminPassword = "p@$$w0rd";

            var createPowerUser = await UserManager.CreateAsync(poweruser, adminPassword);
            if (createPowerUser.Succeeded)
            {
                //here we tie the new user to the role
                await UserManager.AddToRoleAsync(poweruser, "Admin");

            }
       }
    }

然后可以await CreateRoles(serviceProvider);ConfigureStartup类方法中调用该方法确保您IServiceProviderConfigure类中具有参数

问题2:“我如何做到这一点,以便具有管理员用户名和密码的任何人都可以访问这些页面”

您可以轻松地做到这一点,就像这样。

[Authorize(Roles="Admin")]
public class ManageController : Controller
{
   //....
   Return View();
}

您也可以像这样在操作方法中使用基于角色的授权。分配多个角色,如果您愿意

[Authorize(Roles="Admin")]
public IActionResult Index()
{
/*
 .....
 */ 
}

虽然这很好用,但为了更好的实践,您可能需要阅读有关使用基于策略的角色检查的信息。你可以找到它的ASP.NET核心文档在这里,还是这篇文章我写了一篇关于它在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何强制.NET应用程序以管理员身份运行?

如何为 .net 核心 MVC Web 应用程序创建和显示 PDF 文件?

如何为多个用户角色构造.NET Core MVC项目?

如何从非管理员用户会话以管理员身份运行带有GUI的应用程序?

在v2端点中创建的应用程序,如何为我的租户中的所有用户授予管理员同意

如何为Asp.NET MVC 5创建ClaimsIdentity对象?

如何为ASP.NET Core / Angular Web应用程序创建安装程序?

如何从外部管理(添加)ASP.NET Core 3.1应用程序的用户

如何让标准用户运行要求管理员特权的应用程序

如何使用我自己的应用程序的内置管理员登录面板登录用户?

管理员如何仅针对应用程序注册授予特定用户访问权限?

我如何检查用户是否在 c# 中以管理员身份运行应用程序?

如何使应用程序在用户帐户上以管理员身份运行?

如何允许用户管理.Net MVC 5.0应用程序中的用户

如何为.NET Core控制台应用程序创建exe?

如何为 .NET Core 桌面应用程序创建 AWS 服务客户端对象

如何为工作站应用程序成功自托管ASP.NET MVC应用程序或OData服务?

Firebase Web应用程序的管理员视图:如何

如何以管理员身份启动应用程序?

如何知道我的应用程序管理员

如何为kubernetes集群创建多个管理员用户?

在 .net core 中使用 Signalr 向单个用户和管理员角色用户发送通知

如何从ASP.NET MVC 5(身份)中的另一个(管理员角色)帐户创建新的用户帐户

如何为ASP.Net 5(MVC6)内联网应用程序使用活动目录

如何获取MVC5 Web应用程序中所有管理员的列表?

如何允许标准用户在没有管理员密码的情况下运行特定应用程序?

如何通过图形API设置用户管理员角色以使活动目录应用程序蔚蓝

在没有管理员的情况下如何卸载用户配置文件中安装的应用程序?

如何为.NET Core应用程序(.NET Framework)添加WCF服务参考