首先给上项目的整体框架图:,这里我没有使用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. Android之自定义ViewPager实现图片的无线轮播

    PS:以前也写过关于图片轮播这一块的博客.不过写的很烂,并且很多情况没有考虑到(没有支持无线轮播,和手势点击事件).因此这里写一篇补上.也是当时太年轻了. 注:图片请放大后再看.否则看不清楚. 学习内 ...

  2. .net 将List序列化成Json字符串

    将List类型转化为Json,是我们平常开发时最常见的了.在使用中,有很多种方法,也可以使用. 第一种 第三方组件:Newtonsoft.Json.dll //转化成Json Newtonsoft.J ...

  3. CSS3 media queries + jQuery实现响应式导航

    目的: 实现一个响应式导航,当屏幕宽度大于700px时,效果如下: 当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来: 思路: 1.为了之后在菜单上绑定事件,并且不向DOM ...

  4. TCP的定时器

    TCP的定时器 在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的.在TCP中,会有四种定时器: 重传定时器 坚持定时器 保活定时器 2M ...

  5. 基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作

    由于一个客户朋友的需求,需要我的Winform开发框架支持国产达梦数据库的操作,这个数据库很早就听过,但是真正一般项目用的很少,一般在一些特殊的项目可能需要用到.由于我的Winform开发框架,是基于 ...

  6. 记录最初工作下的笔记($.each)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. each遍历在工作中很常用,平时工作最常用的就是快速找到html上dom节点以达到找寻数据,和ajax接受j ...

  7. 简单回顾NPOI导入导出excel文件

    当前环境.net4.0 去官方下下载:  NOPI官网 关于NOPI的详细,这里就不再介绍. 在项目中,我们只需引入  NPOI.dll  就可以了. 接下来..................... ...

  8. 从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  9. PHP 字符串左边补0,字符串右边补0

    概述:项目中经常会使用到在一串编码左边.右边甚至中间自动填充制定字符如"0" 并且制定填充后的字符串长度. 函数str_pad:该函数返回 input 被从左端.右端或者同时两端被 ...

  10. 从头开始搭建一个dubbo+zookeeper平台

    本篇主要是来分享从头开始搭建一个dubbo+zookeeper平台的过程,其中会简要介绍下dubbo服务的作用. 首先,看下一般网站架构随着业务的发展,逻辑越来越复杂,数据量越来越大,交互越来越多之后 ...