asp.net identity 2.2.0 中角色启用和基本使用(一)

基本环境:asp.net 4.5.2

第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器。

在namespace xxx内(即最后一个“}”前面)添加 角色控制类

代码如下:

//配置此应用程序中使用的应用程序角色管理器。RoleManager 在 ASP.NET Identity 中定义,并由此应用程序使用。
public class ApplicationRoleManager : RoleManager<IdentityRole>
    {
        public ApplicationRoleManager(IRoleStore<IdentityRole,string> roleStore)
            : base(roleStore)
        {
        }

        public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
        {
            return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
        }
    }

第二步: 修改startup.auth.cs

在  public void ConfigureAuth(IAppBuilder app) 方法(约为18行左右)中加入  app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);

修改完成后的代码如下:

            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);   //添加的角色管理器
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

这里最基本的角色功能启用就完成了。

可选操作:

这个可选操作用于在创建网站的时候,像网站数据库中添加一个管理用户。如果直接发布给别人用的话 还是挺不错的,自己用的话可以省略掉。

第一步:在identityconfig.cs可以配置添加一个用户(用户名为:“[email protected]”,密码为“[email protected]”)并把该用户添加到角色("Admin")中。

代码如下:

public class ApplicationDbInitializer : DropCreateDatabaseIfModelChanges<ApplicationDbContext>
    {
        protected override void Seed(ApplicationDbContext context) {
            InitializeIdentityForEF(context);
            base.Seed(context);
        }

        //创建用户名为[email protected],密码为“[email protected]”并把该用户添加到角色组"Admin"中
        public static void InitializeIdentityForEF(ApplicationDbContext db) {
            var userManager = HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>();
            var roleManager = HttpContext.Current.GetOwinContext().Get<ApplicationRoleManager>();
            const string name = "[email protected]";//用户名
            const string password = "[email protected]";//密码
            const string roleName = "Admin";//用户要添加到的角色组

            //如果没有Admin用户组则创建该组
            var role = roleManager.FindByName(roleName);
            if (role == null) {
                role = new IdentityRole(roleName);
                var roleresult = roleManager.Create(role);
            }
        
       //如果没有[email protected]用户则创建该用户
            var user = userManager.FindByName(name);
            if (user == null) {
                user = new ApplicationUser { UserName = name, Email = name };
                var result = userManager.Create(user, password);
                result = userManager.SetLockoutEnabled(user.Id, false);
            }

            // 把用户[email protected]添加到用户组Admin中
            var rolesForUser = userManager.GetRoles(user.Id);
            if (!rolesForUser.Contains(role.Name)) {
                var result = userManager.AddToRole(user.Id, role.Name);
            }
        }
    }

第二步:修改Models文件夹中IdentityModels.cs

在public class ApplicationDbContext : IdentityDbContext<ApplicationUser>   类中添加如下代码

static ApplicationDbContext()
        {
            // 在第一次启动网站时初始化数据库添加管理员用户凭据和admin 角色到数据库            Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
        }
时间: 2024-08-09 17:26:05

asp.net identity 2.2.0 中角色启用和基本使用(一)的相关文章

asp.net identity 2.2.0 中角色启用和基本使用(六)

创建用户管理相关视图 第一步:添加视图   打开UsersAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出对话框  什么也不用改 直接“添加” 第二步:在创建的视图上定义一个公开枚举模型 在第一行添加 @model IEnumerable<xxxx(项目名).Models .ApplicationUser> 第三步:建立页面视图模板,代码完成后如下. @model IEnumerable<

asp.net identity 2.2.0 中角色启用和基本使用(四)

创建角色相关视图 第一步:添加视图   打开RolesAdminController.cs   将鼠标移动到public ActionResult Index()上  右键>添加视图   系统会弹出对话框  什么也不用改 直接“确定” 第二步:在创建的视图上定义一个公开枚举模型 在第一行添加 @model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole> 第三步:建立页面视图模板,代码完成后如下. @m

asp.net identity 2.2.0 中角色启用和基本使用(三)

创建控制器 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:RolesAdminController.cs 第二步:添加命名空间 using System.Net; using System.Threading.Tasks; using xxxx.Models;//你项目的名称 using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.Owin; using

asp.net identity 2.2.0 中角色启用和基本使用(二)

建立模型 第一步:在Models文件夹上点右键 >添加>类     类的名称自定,我用AdminViewModels命名的 因为是讲基本使用,我这里不做任何扩展. 第二步:添加如下命名空间 using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; 删除模板建立类时自带的但用不到的命名空间(可选) using System; using System.L

ASP.NET Identity 身份验证和基于角色的授权

ASP.NET Identity 身份验证和基于角色的授权 阅读目录 探索身份验证与授权 使用ASP.NET Identity 身份验证 使用角色进行授权 初始化数据,Seeding 数据库 小结 在前一篇文章中,我介绍了ASP.NET Identity 基本API的运用并创建了若干用户账号.那么在本篇文章中,我将继续ASP.NET Identity 之旅,向您展示如何运用ASP.NET Identity 进行身份验证(Authentication)以及联合ASP.NET MVC 基于角色的授权

asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(一)

基本环境:asp.net 4.5.2 第一步:在App_Start文件夹中的IdentityConfig.cs中添加角色控制器. 在namespace xxx内(即最后一个“}”前面)添加 角色控制类 代码如下: //配置此应用程序中使用的应用程序角色管理器.RoleManager 在 ASP.NET Identity 中定义,并由此应用程序使用. public class ApplicationRoleManager : RoleManager<IdentityRole> { public

asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(三)

角色管理功能: 界面部分: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="jueseadmin.aspx.cs" Inherits="admin_jueseadmin" %> <asp:Content ID="Con

asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(四)

有网友问及权限的问题,其实我觉得没什么改进. 主目录下的web.config基本不用改.要说要改的也就只有数据库连接了. <authentication mode="None" />    <compilation debug="true" targetFramework="4.5.2" /> 这两项我都没改,按说<authentication mode="None" />应该改为<a

asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(二)

管理用户功能: 界面部分: <%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="admin_Default" %> <asp:Content ID="Content1&