Asp.Net MVC+BootStrap+EF6.0實現簡單的用戶角色權限管理1


首先給上項目的整體框架圖:,這里我沒有使用BLL,因為感覺太煩了就沒有去使用。

那么接下來我們首先先去Model層中添加Model。

管理員類:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 管理員
    /// </summary>
    public class Admin {
        /// <summary>
        /// 管理員ID(主鍵)
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 用戶名
        /// </summary>
        [StringLength(30)]
        [Column(TypeName="varchar")]
        public string AdminName { get; set; }
        /// <summary>
        /// 手機號碼
        /// </summary>
        [StringLength(11)]
        [Column(TypeName = "varchar")]
        public string Mobile { get; set; }
        /// <summary>
        /// 郵箱
        /// </summary>
        [StringLength(100)]
        [Column(TypeName = "varchar")]
        public string Email { get; set; }
        /// <summary>
        /// 密碼
        /// </summary>
        [StringLength(120)]
        [Column(TypeName = "varchar")]
        public string Password { get; set; }
        /// <summary>
        /// 密碼鹽值
        /// </summary>
        [StringLength(10)]
        [Column(TypeName = "varchar")]
        public string Salt { get; set; }
        /// <summary>
        /// 對應角色Id
        /// </summary>
        public int AuthoryId { get; set; }
        /// <summary>
        /// 添加時間
        /// </summary>
        public DateTime CreateTime { get; set; }
        /// <summary>
        /// 是否超級管理員
        /// </summary>
        public Byte IsSuperAdmin { get; set; }
        /// <summary>
        /// 上次登錄時間
        /// </summary>
        public DateTime LastLoginTime { get; set; }
        /// <summary>
        /// 上次登錄地址
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "nvarchar")]
        public string LastLoginAddress { get; set; }
        /// <summary>
        /// 上次登錄端口基本信息
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string LastLoginInfo { get; set; }
        /// <summary>
        /// 上次登錄Ip
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string LastLoginIp { get; set; }
        public Admin(){
            CreateTime = DateTime.Now;
            LastLoginTime = DateTime.Now;
        }
    }
}
View Code

[Key]這個事用來設置主鍵的,[StringLength(30)]是用來控制在創建數據庫的時候控制長度,[Column(TypeName="varchar")]是用來創建該字段在數據庫中的類型。我在創建的時候沒有使用外鍵,因本人對外鍵不熟所以沒使用。Byte類型就相當於數據庫的tinyint類型。

頁面與頁面動作聯系表:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 頁面與頁面動作聯系表
    /// </summary>
    public class ActionToPage {
        /// <summary>
        /// 自增Id
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 頁面Id
        /// </summary>
        public int PageId { get; set; }
        /// <summary>
        /// 動作集合(用json存儲)
        /// </summary>
        [StringLength(300)]
        [Column(TypeName = "varchar")]
        public string ActionList { get; set; }
        /// <summary>
        /// 是否刪除
        /// </summary>
        public Byte IsDelete { get; set; }
    }
}
View Code

管理員登錄日志:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 管理員登錄日志
    /// </summary>
    public class AdminLoginLog {
        /// <summary>
        /// 管理員登錄記錄Id
        /// </summary>
        [Key]
        public int AdminLoginLogId { get; set; }
        /// <summary>
        /// 管理員Id
        /// </summary>
        public int AdminId { get; set; }
        /// <summary>
        /// 管理員登錄地址
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "nvarchar")]
        public string AdminLoginAddress { get; set; }
        /// <summary>
        /// 管理員登錄IP
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string AdminLoginIP { get; set; }
        /// <summary>
        /// 管理員登錄時間
        /// </summary>
        public DateTime AdminLoginTime { get; set; }
        /// <summary>
        /// 瀏覽器信息或者APP信息
        /// </summary>
        [Column(TypeName = "varchar")]
        [StringLength(50)]
        public string AdminLoginInfo { get; set; }
        public AdminLoginLog() {
            AdminLoginTime = DateTime.Now;
        }
    }
}
View Code

管理員操作類:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 管理員操作類
    /// </summary>
    public class AdminOperation {
        [Key]
        public int AdminOperationId { get; set; }
        /// <summary>
        /// 管理員Id
        /// </summary>
        public int AdminId { get; set; }
        /// <summary>
        /// 權限Id
        /// </summary>
        public int AuthoryId { get; set; }
        /// <summary>
        /// 動作Id(1:增,2:修改,3:查看,4:刪除)
        /// </summary>
        public int Action { get; set; }
        /// <summary>
        /// 操作標題
        /// </summary>
        [StringLength(15)]
        [Column(TypeName = "nvarchar")]
        public string Title { get; set; }
        /// <summary>
        /// 操作詳情
        /// </summary>
        [StringLength(200)]
        [Column(TypeName = "nvarchar")]
        public string Content { get; set; }
        /// <summary>
        /// 操作IP
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string OperateIP { get; set; }
        /// <summary>
        /// 操作地址
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "nvarchar")]
        public string OperateAddress { get; set; }
        /// <summary>
        /// 瀏覽器信息或者APP信息
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string OperateInfo { get; set; }
        /// <summary>
        /// 創建時間
        /// </summary>
        public DateTime CreateTime { get; set; }
        public AdminOperation() {
            CreateTime = DateTime.Now;
        }
    }
}
View Code

用戶與頁面和頁面動作聯系表:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 用戶與頁面和頁面動作聯系表
    /// </summary>
    public class AdminToPage {
        /// <summary>
        /// 
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 管理員Id
        /// </summary>
        public int AdminId { get; set; }
        /// <summary>
        /// 頁面Id
        /// </summary>
        public int PageId { get; set; }
        /// <summary>
        /// 動作集合(用json存儲)
        /// </summary>
        [StringLength(300)]
        [Column(TypeName = "varchar")]
        public string ActionList { get; set; }
        /// <summary>
        /// 是否顯示
        /// </summary>
        public Byte IsShow { get; set; }
        /// <summary>
        /// 是否刪除
        /// </summary>
        public Byte IsDelete { get; set; }
    }
}
View Code

角色:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 角色
    /// </summary>
    public class Authory {
        /// <summary>
        /// 角色Id
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 角色名稱
        /// </summary>
        [StringLength(15)]
        [Column(TypeName = "varchar")]
        public string Name { get; set; }
        /// <summary>
        /// 角色簡介
        /// </summary>
        [StringLength(30)]
        [Column(TypeName = "varchar")]
        public string Intro { get; set; }
        /// <summary>
        /// 角色狀態(0:正常;1:已刪除)
        /// </summary>
        public Byte State { get; set; }
    }
}
View Code

角色與頁面和頁面動作之間聯系:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 角色與頁面和頁面動作之間聯系
    /// </summary>
    public class AuthoryToPage {
        /// <summary>
        /// 自增Id
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 權限Id
        /// </summary>
        public int AuthoryId { get; set; }
        /// <summary>
        /// 頁面Id
        /// </summary>
        public int PageId { get; set; }
        /// <summary>
        /// 動作集合(用json存儲)
        /// </summary>
        [StringLength(300)]
        [Column(TypeName = "varchar")]
        public string ActionList { get; set; }
        /// <summary>
        /// 是否顯示
        /// </summary>
        public Byte IsShow { get; set; }
        /// <summary>
        /// 是否刪除
        /// </summary>
        public Byte IsDelete { get; set; }
    }
}
View Code

頁面動作:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 頁面動作
    /// </summary>
    public class PageAction {
        /// <summary>
        /// 動作Id
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 動作名稱
        /// </summary>
        [StringLength(15)]
        [Column(TypeName = "varchar")]
        public string Name { get; set; }
        /// <summary>
        /// 動作代碼(頁面代碼)
        /// </summary>
        [StringLength(35)]
        [Column(TypeName = "varchar")]
        public string ActionCode { get; set; }
        /// <summary>
        /// 是否顯示
        /// </summary>
        public Byte IsShow { get; set; }
        /// <summary>
        /// 動作等級
        /// </summary>
        public Byte ActionLevel { get; set; }
    }
}
View Code

頁面:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.Model {
    /// <summary>
    /// 頁面
    /// </summary>
    public class PageMenu {
        /// <summary>
        /// 
        /// </summary>
        [Key]
        public int Id { get; set; }
        /// <summary>
        /// 頁面Id
        /// </summary>
        public int PId { get; set; }
        /// <summary>
        /// 頁面名稱
        /// </summary>
        [StringLength(15)]
        [Column(TypeName = "varchar")]
        public string Name { get; set; }
        /// <summary>
        /// 頁面路徑
        /// </summary>
        [StringLength(50)]
        [Column(TypeName = "varchar")]
        public string PageUrl { get; set; }
        /// <summary>
        /// 是否顯示
        /// </summary>
        public byte IsShow { get; set; }
        /// <summary>
        /// 排序
        /// </summary>
        public int OrderNum { get; set; }
        /// <summary>
        /// 頁面圖標
        /// </summary>
        [StringLength(30)]
        [Column(TypeName = "varchar")]
        public string Ico { get; set; }
    }
}
View Code

以上就是Model了。

下面的是對基礎倉儲的編輯(也就是DAL):

首先安裝下EF,選擇6.0安裝即可

首先是DbContext:這是EF與數據庫連接的上下文。

using AuthorDesign.Model;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorDesign.DAL {
    public class AuthorDesignContext : DbContext {
        public AuthorDesignContext()
            : base("AuthorDesignContext") { 
        }

        public DbSet<ActionToPage> ActionToPages { get; set; }
        public DbSet<Admin> Admins { get; set; }
        public DbSet<AdminLoginLog> AdminLoginLogs { get; set; }
        public DbSet<AdminOperationRepository> AdminOperations { get; set; }
        public DbSet<AdminToPage> AdminToPages { get; set; }
        public DbSet<Authory> Authories { get; set; }
        public DbSet<AuthoryToPage> AuthoryToPages { get; set; }
        public DbSet<PageAction> PageActions { get; set; }
        public DbSet<PageMenu> PageMenus { get; set; }
    }
}
View Code

感覺類有點多,下篇繼續寫關於DAL的,這里一些都是簡單的代碼。可能本人寫的不好,各位看官要是那里可以改進的或者那里有疑問的可以問我。

百度源碼下載地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM