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 ...
随机推荐
- C#解决Linq OrderBy() 失效的小技巧
前言 前几天的一个数据列表中我用了Linq GroupBy 和OrderBy. 排序在本机正常使用,发到测试后排序死活不对,很是郁闷,总以为是程序问题.于是请教了另外一个同事.有了以下的答案. 问题原 ...
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
1. 引言 Pandas是一个开源的Python数据分析库.Pandas把结构化数据分为了三类: Series,1维序列,可视作为没有column名的.只有一个column的DataFrame: Da ...
- Python_Day_03 list,dic,tuple方法总结
编程语言中最长见的几种数据类型,字典,列表,等.同样在Python中也有这些数据类型,只是有些表现形式不同.同时在Python中又多了一种叫做元组(tuple)的东西. list(列表) 初始化列表 ...
- Hexo主题实现多级分类显示
前言 最近在搞一个博客,是托管在github和gitcafe上的,利用Hexo生成的.之后,发现一个问题,显示的分类都是一级的.而我想要的是:能显示多级分类,层次分明`的那样. 问题 基本主题自带的分 ...
- 解决asp.net mvc的跨域请求问题
web.config中配置如下内容: <system.webServer> <httpProtocol> <customHeaders> <add name= ...
- String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23&quo ...
- php实现设计模式之 原型模式
<?php /* * 原型模式:通过复制已经存在的对象来创建新对象. * 通过原型实例指定创建对象的种类,并且通过copy这些原型创建信的对象 * 是创建型模式 * 有的时候创建一个对象有很多步 ...
- 26、ASP.NET MVC入门到精通——后台管理区域及分离、Js压缩、css、jquery扩展
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做准备,由于许久没有练习双截棍了,难免生疏,所以现在临时抱 ...
- Net环境下比较流行的ORM框架对比
个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hibernate,除了在学习基础知识的时候被告知可以使用JDBC操作数据库之外,大量的书籍中都是讲述使 ...
- S1的小成果:MyKTV系统
转眼之间,已经到了2016年,即新的一年了!S1也结束了,收获的也不多 ,想想最后留给大家的就一个KTV项目了. 希望大家看时有所收获 现在我们一起来看KTV前台管理 主界面的运行 ...