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 ...
随机推荐
- 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)
这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...
- [java] 深入理解内部类: inner-classes
[java] 深入理解内部类: inner-classes // */ // ]]> [java] 深入理解内部类: inner-classes Table of Contents 1 简介 ...
- android防止内存溢出浅析
Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M.但是Android采用的是Java语言编写,所以在很大程度上,Android的内存机制等同于Java的内存机制,在刚开始开 ...
- 使用css3的动画模拟太阳系行星公转
本文介绍使用css3的animation画一个太阳系行星公转的动画,再加以改进,讨论如何画椭圆的运行轨迹.然后分析京东和人人网使用animation的实际案例,最后结合css3的clip-path做一 ...
- TeamCity : 配置第一个工程
前面我们已经创建了TeamCity Server 和一个 Agent,接下来我们为一个.net core 控制台程序配置自动化的编译. 创建 .net core 项目 我们在本地创建一个简单的 .ne ...
- 实战 ASP.NET Web API
Web API 框架是一个面向 Http 协议的通信框架.相对于 WCF 而言,Web API 只面向于 Http 协议设计,而且没有 WCF 那么繁琐的配置.Web API 的开发类似于 ASP.N ...
- Effective java笔记(十),序列化
将一个对象编码成字节流称作将该对象「序列化」.相反,从字节流编码中重新构建对象被称作「反序列化」.一旦对象被「序列化」后,它的编码就可以从一台虚拟机传递到另一台虚拟机,或被存储到磁盘上,供以后「反序列 ...
- C# 项目提交过程中感受
C# 项目提交过程中感受 新到一家互联网公司,昨天第一次提交代码,遇到了不少问题,而且大多数是代码格式问题,特此将范的错误记录下来,自我警示. 1. 代码对齐,这个虽然一直也都在注意,不过还是有一行代 ...
- 学习笔记之-------UIScrollView 基本用法 代理使用
//contentSize.contentInset和contentOffset 是 scrollView三个基本的属性. // 滚动 self.ScrollView.contentSize =sel ...
- HTML5标签与HTML4标签的区别示例介绍_html5教程技巧
(1)概念的变化: HTML5专注内容与结构,而不专注的表现 <header> <hgroup>导航相关数据</hgroup> </header> &l ...