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()]
[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的更多相关文章
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理10
今天把用户的菜单显示和页面的按钮显示都做好了,下面先来个效果图 接下来说下我实现的方法: 首先我在每个方法前面都加了这个属性, /// <summary> /// 表示当前Action请求 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理4
首先先加个区域,名为Admin using System.Web.Mvc; namespace AuthorDesign.Web.Areas.Admin { public class AdminAre ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理9
前两天因有事就没来得及写.今天刚刚好空了.这次写的是对角色和管理员对页面按钮之间的控制.先看页面效果 说明:先根据角色设置好角色的权限,然后管理员在对应的角色下的权限去设置其权限. 在设置角色权限的时 ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6
接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理5
我们先直接拷贝下blank.html这个页面的代码,顺带先建立一个Home控制器,并添加Index视图.将代码拷贝进去. <!DOCTYPE html> <html lang=&qu ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7
做完角色之后接下来做先做页面按钮的增加.删除.修改.这里用到的功能和角色那边是一样的.就不多说了.直接上代码. 后台控制器代码 using AuthorDesign.Web.App_Start.Com ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8
接下来做的是对页面的增删改查与页面与页面按钮之间的联系.先上代码和页面效果 using AuthorDesign.Web.App_Start.Common; using System; using S ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理3
首先在webconfig中加入下面这句代码,这个主要是用来生成数据库的连接字符串 <connectionStrings> <add name="AuthorDesignCo ...
随机推荐
- iOS_UIImage_毛玻璃效果
效果图: 核心方法: // 出入UIImage 和 blur模糊成度 (0-1) - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CG ...
- Android中后台的劳动者“服务”
前言 作为四大组件之一的Service,想必不少开发者都是了解的,那具体熟悉吗?是不是对Service中的每个知识点是否了解,它与Activity的关系又是什么样的,我们所理解的后台服务跟Servic ...
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- jQuery-1.9.1源码分析系列(一)整体架构续
这一节主要是jQuery中最基础的几个东东 2. jQuery的几个基础属性和函数 a. jQuery.noConflict函数详解 在jQuery初始化的时候保存了外部的$和jQuery _j ...
- centos6搭建gitlab
前言 原来的项目放在公网的gitlab上,处于安全考虑,在内网搭建一套,有图形界面,可以直接从外网git导入进来,使用了一下觉得挺方便,把安装流程记录下来,参考官网:https://gitlab.co ...
- [Access] C# 通过 COM 组件访问 Access 文件
说明: 1,采用 dynamic 调用 COM 组件,适用于 .NET 4.0 以上支持 dynamic 版本的才可以: 2,执行速度不敢恭维,只是因为要用于 Silverlight OOB 模式中才 ...
- SQL 循环语句 while 介绍 实例
declare @i int begin insert into test (userid) values(@i) end --------------- while 条件 begin 执行操作 en ...
- android 网络加载图片,对图片资源进行优化,并且实现内存双缓存 + 磁盘缓存
经常会用到 网络文件 比如查看大图片数据 资源优化的问题,当然用开源的项目 Android-Universal-Image-Loader 或者 ignition 都是个很好的选择. 在这里把原来 ...
- Android源码编译make的错误处理
android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Li ...
- php和js中json的编码和解码
php中 1)编码 $jsonStr = json_encode($array) 2)解码 $arr = json_decode($jsonStr) <?php echo json_encode ...