首先给上项目的整体框架图:,这里我没有使用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()]
[Column(TypeName="varchar")]
public string AdminName { get; set; }
/// <summary>
/// 手机号码
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string Mobile { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string Email { get; set; }
/// <summary>
/// 密码
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string Password { get; set; }
/// <summary>
/// 密码盐值
/// </summary>
[StringLength()]
[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()]
[Column(TypeName = "nvarchar")]
public string LastLoginAddress { get; set; }
/// <summary>
/// 上次登录端口基本信息
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string LastLoginInfo { get; set; }
/// <summary>
/// 上次登录Ip
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string LastLoginIp { get; set; }
public Admin(){
CreateTime = DateTime.Now;
LastLoginTime = DateTime.Now;
}
}
}

[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()]
[Column(TypeName = "varchar")]
public string ActionList { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public Byte IsDelete { get; set; }
}
}

管理员登录日志:

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()]
[Column(TypeName = "nvarchar")]
public string AdminLoginAddress { get; set; }
/// <summary>
/// 管理员登录IP
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string AdminLoginIP { get; set; }
/// <summary>
/// 管理员登录时间
/// </summary>
public DateTime AdminLoginTime { get; set; }
/// <summary>
/// 浏览器信息或者APP信息
/// </summary>
[Column(TypeName = "varchar")]
[StringLength()]
public string AdminLoginInfo { get; set; }
public AdminLoginLog() {
AdminLoginTime = DateTime.Now;
}
}
}

管理员操作类:

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()]
[Column(TypeName = "nvarchar")]
public string Title { get; set; }
/// <summary>
/// 操作详情
/// </summary>
[StringLength()]
[Column(TypeName = "nvarchar")]
public string Content { get; set; }
/// <summary>
/// 操作IP
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string OperateIP { get; set; }
/// <summary>
/// 操作地址
/// </summary>
[StringLength()]
[Column(TypeName = "nvarchar")]
public string OperateAddress { get; set; }
/// <summary>
/// 浏览器信息或者APP信息
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string OperateInfo { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
public AdminOperation() {
CreateTime = DateTime.Now;
}
}
}

用户与页面和页面动作联系表:

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()]
[Column(TypeName = "varchar")]
public string ActionList { get; set; }
/// <summary>
/// 是否显示
/// </summary>
public Byte IsShow { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public Byte IsDelete { get; set; }
}
}

角色:

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()]
[Column(TypeName = "varchar")]
public string Name { get; set; }
/// <summary>
/// 角色简介
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string Intro { get; set; }
/// <summary>
/// 角色状态(0:正常;1:已删除)
/// </summary>
public Byte State { get; set; }
}
}

角色与页面和页面动作之间联系:

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()]
[Column(TypeName = "varchar")]
public string ActionList { get; set; }
/// <summary>
/// 是否显示
/// </summary>
public Byte IsShow { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public Byte IsDelete { get; set; }
}
}

页面动作:

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()]
[Column(TypeName = "varchar")]
public string Name { get; set; }
/// <summary>
/// 动作代码(页面代码)
/// </summary>
[StringLength()]
[Column(TypeName = "varchar")]
public string ActionCode { get; set; }
/// <summary>
/// 是否显示
/// </summary>
public Byte IsShow { get; set; }
/// <summary>
/// 动作等级
/// </summary>
public Byte ActionLevel { get; set; }
}
}

页面:

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()]
[Column(TypeName = "varchar")]
public string Name { get; set; }
/// <summary>
/// 页面路径
/// </summary>
[StringLength()]
[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()]
[Column(TypeName = "varchar")]
public string Ico { get; set; }
}
}

以上就是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; }
}
}

感觉类有点多,下篇继续写关于DAL的,这里一些都是简单的代码。可能本人写的不好,各位看官要是那里可以改进的或者那里有疑问的可以问我。

百度源码下载地址

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理1的更多相关文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  2. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10

    今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...

  3. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理4

    首先先加个区域,名为Admin using System.Web.Mvc; namespace AuthorDesign.Web.Areas.Admin { public class AdminAre ...

  4. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理9

    前两天因有事就没来得及写.今天刚刚好空了.这次写的是对角色和管理员对页面按钮之间的控制.先看页面效果 说明:先根据角色设置好角色的权限,然后管理员在对应的角色下的权限去设置其权限. 在设置角色权限的时 ...

  5. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

    接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...

  6. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理5

    我们先直接拷贝下blank.html这个页面的代码,顺带先建立一个Home控制器,并添加Index视图.将代码拷贝进去. <!DOCTYPE html> <html lang=&qu ...

  7. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7

    做完角色之后接下来做先做页面按钮的增加.删除.修改.这里用到的功能和角色那边是一样的.就不多说了.直接上代码. 后台控制器代码 using AuthorDesign.Web.App_Start.Com ...

  8. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8

    接下来做的是对页面的增删改查与页面与页面按钮之间的联系.先上代码和页面效果 using AuthorDesign.Web.App_Start.Common; using System; using S ...

  9. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理3

    首先在webconfig中加入下面这句代码,这个主要是用来生成数据库的连接字符串 <connectionStrings> <add name="AuthorDesignCo ...

随机推荐

  1. 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

    这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...

  2. [java] 深入理解内部类: inner-classes

    [java] 深入理解内部类: inner-classes // */ // ]]>   [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...

  3. android防止内存溢出浅析

    Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M.但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开 ...

  4. 使用css3的动画模拟太阳系行星公转

    本文介绍使用css3的animation画一个太阳系行星公转的动画,再加以改进,讨论如何画椭圆的运行轨迹.然后分析京东和人人网使用animation的实际案例,最后结合css3的clip-path做一 ...

  5. TeamCity : 配置第一个工程

    前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译. 创建 .net core 项目 我们在本地创建一个简单的 .ne ...

  6. 实战 ASP.NET Web API

    Web API 框架是一个面向 Http 协议的通信框架.相对于 WCF 而言,Web API 只面向于 Http 协议设计,而且没有 WCF 那么繁琐的配置.Web API 的开发类似于 ASP.N ...

  7. Effective java笔记(十),序列化

    将一个对象编码成字节流称作将该对象「序列化」.相反,从字节流编码中重新构建对象被称作「反序列化」.一旦对象被「序列化」后,它的编码就可以从一台虚拟机传递到另一台虚拟机,或被存储到磁盘上,供以后「反序列 ...

  8. C# 项目提交过程中感受

    C# 项目提交过程中感受 新到一家互联网公司,昨天第一次提交代码,遇到了不少问题,而且大多数是代码格式问题,特此将范的错误记录下来,自我警示. 1. 代码对齐,这个虽然一直也都在注意,不过还是有一行代 ...

  9. 学习笔记之-------UIScrollView 基本用法 代理使用

    //contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. // 滚动 self.ScrollView.contentSize =sel ...

  10. HTML5标签与HTML4标签的区别示例介绍_html5教程技巧

    (1)概念的变化: HTML5专注内容与结构,而不专注的表现 <header> <hgroup>导航相关数据</hgroup> </header> &l ...