ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1)

news/2024/5/10 5:15:18/文章来源:https://blog.csdn.net/weixin_30883777/article/details/99132108

本系列的的角色权限管理主要采用Dotnet MVC4工程内置的权限管理模块Simplemembership实现,主要有关文件是InitializeSimpleMembershipAttribute.cs和AccountModels.cs

下面是对这两个文件的了解和改造

 WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);表示数据库表不存在的情况下,通过连接到包含用户信息的数据库以及使用指定的成员资格或角色提供程序来初始化成员资格系统。

首先创建一个MVCSystem的空数据库,如下:

然后改造配置文件Web.config数据库链接,注意这里的name="DefaultConnection"与上面的WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);相同

然后运行程序,在空数据库MVCSystem中生成以下数据表(有的可能无法生存webpages_Permission,webpages_PermissionsInRoles表,不过没关系,手动建(字段参考下图)就可以了)

对于运行后无法自动生成数据表的同学,可以点击一下Home page上的注册按钮!

接下来创建和改造Models类:

AccountModels.cs【管理员管理页面的一些基本的ViewModel】

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel.DataAnnotations;
 4 using System.ComponentModel.DataAnnotations.Schema;
 5 using System.Data.Entity;
 6 using System.Globalization;
 7 using System.Web.Security;
 8 
 9 namespace MVCSystem.Web.Models
10 {
11    
12 
13     public class RegisterExternalLoginModel
14     {
15         [Required]
16         [Display(Name = "用户名")]
17         public string UserName { get; set; }
18 
19         public string ExternalLoginData { get; set; }
20     }
21 
22     public class LocalPasswordModel
23     {
24         [Required]
25         [DataType(DataType.Password)]
26         [Display(Name = "当前密码")]
27         public string OldPassword { get; set; }
28 
29         [Required]
30         [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
31         [DataType(DataType.Password)]
32         [Display(Name = "新密码")]
33         public string NewPassword { get; set; }
34 
35         [DataType(DataType.Password)]
36         [Display(Name = "确认新密码")]
37         [Compare("NewPassword", ErrorMessage = "新密码和确认密码不匹配。")]
38         public string ConfirmPassword { get; set; }
39     }
40 
41     public class LoginModel
42     {
43         [Required]
44         [Display(Name = "用户名")]
45         public string UserName { get; set; }
46 
47         [Required]
48         [DataType(DataType.Password)]
49         [Display(Name = "密码")]
50         public string Password { get; set; }
51 
52         [Display(Name = "记住我?")]
53         public bool RememberMe { get; set; }
54     }
55 
56     public class RegisterModel
57     {
58         [Required]
59         [Display(Name = "用户名")]
60         public string UserName { get; set; }
61 
62         [Required]
63         [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
64         [DataType(DataType.Password)]
65         [Display(Name = "密码")]
66         public string Password { get; set; }
67 
68         [DataType(DataType.Password)]
69         [Display(Name = "确认密码")]
70         [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
71         public string ConfirmPassword { get; set; }
72     }
73 
74     public class ExternalLogin
75     {
76         public string Provider { get; set; }
77         public string ProviderDisplayName { get; set; }
78         public string ProviderUserId { get; set; }
79     }
80 }
View Code

M_UserProfile.cs【我们可以扩展管理员数据表字段,电话,地址,邮箱等】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{[Table("UserProfile")]public class M_UserProfile{[Key][DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)][Display(Name = "ID")]public int UserId { get; set; }[Display(Name = "用户名")][StringLength(250)]public string UserName { get; set; }[Display(Name = "邮件地址")][StringLength(250)]public string Email { get; set; }}
}
View Code

M_Membership.cs【这个主要存储管理员的信息内容,以后要用到(比如重置密码)】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{[Table("webpages_Membership")]public class M_Membership{public M_Membership(){Roles = new List<M_Roles>();}[Key]public int UserId { get; set; }public DateTime? CreateDate { get; set; }public string ConfirmationToken { get; set; }public bool? IsConfirmed { get; set; }public DateTime? LastPasswordFailureDate { get; set; }public int PasswordFailuresSinceLastSuccess { get; set; }public string Password { get; set; }public DateTime? PasswordChangedDate { get; set; }public string PasswordSalt { get; set; }public string PasswordVerificationToken { get; set; }public DateTime? PasswordVerificationTokenExpirationDate { get; set; }public ICollection<M_Roles> Roles { get; set; }}}
View Code

M_Permission.cs【用来存储具体的Action权限】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{[Table("webpages_Permission")]public class M_Permission{public M_Permission(){T_PermissionsInRoles = new List<M_PermissionsInRoles>();}[Key][DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)][Display(Name = "权限ID")]public int PermissionId { get; set; }[Display(Name = "名称")]public string PermissionName { get; set; }[ForeignKey("PermissionId")]public ICollection<M_PermissionsInRoles> T_PermissionsInRoles { set; get; }}
}
View Code

M_Roles.cs【角色表,与管理员角色表、角色权限表关联】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{ [Table("webpages_Roles")]public class M_Roles{public M_Roles(){T_Members = new List<M_Membership>();T_PermissionsInRoles = new List<M_PermissionsInRoles>();}[Key][Display(Name = "ID")]public int RoleId { get; set; }[Display(Name = "名称")][StringLength(256)]public string RoleName { get; set; }public ICollection<M_Membership> T_Members { get; set; }[ForeignKey("RoleId")]public ICollection<M_PermissionsInRoles> T_PermissionsInRoles { set; get; }}
}
View Code

M_UsersInRoles.cs【用来存储用户的角色】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{[Table("webpages_UsersInRoles")]public class M_UsersInRoles{[Key]public int UsersInRolesId { get; set; }public int UserId { get; set; }public int RoleId { get; set; }}
}
View Code

M_PermissionsInRoles.cs【用来存储角色的具体权限】

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;namespace MVCSystem.Web.Models
{[Table("webpages_PermissionsInRoles")]public class M_PermissionsInRoles{[Key]public int Id { get; set; }public int RoleId { get; set; }public int PermissionId { get; set; }public M_Roles T_Role { get; set; }public M_Permission T_Permission { get; set; }}
}
View Code

 

然后创建一个Common文件夹,主要存储一些公告类:

简述:EF5.0包括Code First和DbContext API。DbContext API为EF提供更多的工作方式:Code First,Database First和Model First。

使用DbContext构造函数

1. Code First约定连接

namespace Magic.Unicorn
{
    public class UnicornsContext : 
DbContext
    {
        public UnicornsContext()
        
// C# will call base class parameterless constructor by default
        {
        }
    }
}

用Magic.Unicorn.UnicornsContext作为数据库名,在本机上生成该数据库的连接字符串(SQL Express)。

 

2. Code First指定数据库名称的约定连接

public class UnicornsContext : DbContext
{
    public UnicornsContext()
        : base("UnicornsDatabase")
    {
    }
}

MVCStystemContext.cs实体类集合

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
using MVCSystem.Web.Models;namespace MVCSystem.Web.Common
{public class MVCStystemContext : DbContext{public MVCStystemContext(): base("DefaultConnection"){}public DbSet<M_UserProfile> DB_UserProfiles { get; set; }public DbSet<M_Membership> DB_Membership { get; set; }public DbSet<M_Roles> DB_Roles { get; set; }public DbSet<M_UsersInRoles> DB_UsersInRoles { get; set; }}
}
View Code

 源码下载:http://www.yealuo.com/Sccnn/Detail?KeyValue=2f926407-f80b-4bff-a729-949a53efed7b

作者:boyzi007
出处:http://www.cnblogs.com/boyzi/

QQ:470797533

QQ交流群:364307742
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/boyzi/p/5127994.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_827997.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器超全网站收藏夹 6000+

网上这种资源的分享特别少大家切珍惜 废话不对说直接上图自己看 分了这么多类你就知道我收藏了多少网站吧&#xff1f; 没错有6000左右&#xff0c;网上这类资源确实少之又少。所以分享了一下 大家可以前往这个地址下载&#xff0c;绝对赚的&#xff0c;很多网站都是自己一个…

百度商桥放在php网站哪里_360算命吸粉推广开户丨神马百度搜狗360开户平台

360算命吸粉推广开户丨神马百度搜狗360开户平台其实关键词分析只要合理&#xff0c;就可以&#xff0c;帐户分类就是为了随时调整和数据分析&#xff0c;关键词分类&#xff0c;也是随时调整的。第三、筛选关键词百度后台会提供关键词&#xff0c;也可以看百度指数。刚刚开始跑…

优化网站加载时间(GTmetrix)

首先&#xff0c;看下页面加载时间轴 1.URL重定向时间&#xff08;Redirect duration&#xff09; 包括&#xff1a; Redirect from a non-www to www (eg. example.com to www.example.com)Redirect to a secure URL (eg. http:// to https://)Redirect to set cookiesRedir…

获取roi内的xld_利用SEO 优化实现低成本获取高质量的流量转化

我们知道内容是网站建设的重要基础性资源&#xff0c;但对于一些企业而言&#xff0c;或者集团性的公司&#xff0c;在做任何项目运营的时候&#xff0c;都会非常关注获取高质量的流量转化的问题。 特别是精准的衡量一个内容投资回报率显得格外重要根据以往SEO的工作经验&#…

潮鞋购物网站,html5+css3+js,实现基本的添加购物车,自动计算金额等功能

项目展示效果 实现添加购物鞋数量总金额自动变化 实现连接购物车功能 实现在购物车里收藏与删除 下面是购物页面代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>购买精选</title><sty…

想要那种有提示声音的网站吗?我教你怎么做!

您有新的外卖订单请及时查收&#xff01;熟悉不能再熟悉的声音了&#xff0c;今天小编就做了这样一个网站的提示新订单的功能&#xff0c;接下来就教你怎么玩转这个小功能&#xff01;首先我们前端的代码是这样写的&#xff1a;var playSound function () { var borswer wind…

基于ELK 搭建网站流量可视化监控平台

2019独角兽企业重金招聘Python工程师标准>>> ELK 组成&#xff1a;&#xff1a; 通过上图我们可以看到&#xff0c;ELK 是由三个Elastic 的产品组合而成&#xff0c;分别是ElasticSearch、Logstash 和Kibana。三者之间是的部署关系如下图所示&#xff1a; Logstash …

不修改代码就能优化ASP.NET网站性能的一些方法

本文将介绍一些方法用于优化ASP.NET网站性能&#xff0c;这些方法都是不需要修改程序代码的。 它们主要分为二个方面&#xff1a; 1. 利用ASP.NET自身的扩展性进行优化。 2. 优化IIS设置。 配置OutputCache 用缓存来优化网站性能的方法&#xff0c;估计是无人不知的。 ASP.NET…

通过建站学运维1901-09任务

4.21LNMP环境介绍 什么是LNMP Linux NginxMySQL/MariadbPHP Linux就是操作系统 Nginx 是一个web服务器&#xff0c;提供HTTP服务的。之所以能够访问网站就是Nginx在起作用。 Nginx的功能&#xff1a; 接收用户请求&#xff0c;处理图片、js、css等静态请求。接收但不处理php请求…

【Web】Bootstrap框架实现简单旅游网站页面

这里主要是为了熟悉以下Bootstrap框架的简单使用&#xff0c;采用了响应式布局。 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" conte…

4.Nginx静态网站部署

Nginx是一个HTTP的web服务器&#xff0c;可以将服务器上的静态文件&#xff08;如HTML、图片等&#xff09;通过HTTP协议返回给浏览器客户端。 一、项目实例 1.进入opt目录下&#xff0c;新建static目录 2.通过Xftp将ace-master到linux服务器/opt/static目录下 为了让后面的配…

Apache下通过shell脚本提交网站404死链

网站运营人员对于死链这个概念一定不陌生&#xff0c;网站的一些数据删除或页面改版等都容易制造死链&#xff0c;影响用户体验不说&#xff0c;过多的死链还会影响到网站的整体权重或排名。 百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链、404页面)进行提交,可…

Django的安装使用,以及建立本地网站

一、安装Django pip install django 完成后即可 二、pycharm 建立django 点击file ——>new project 选择django项目——>more setting填写appname 生成以下项目结构 -views.py中处理视图逻辑&#xff0c;一般为大量函数方法。一般被urls处理调用&#xff0c;收到请求&am…

看透 Spring MVC 源代码分析与实践 —— 网站基础知识

网站架构及其演变过程友情提示&#xff1a;欢迎关注公众号【芋道源码】。?关注后&#xff0c;拉你进【源码圈】微信群讨论技术和源码。友情提示&#xff1a;欢迎关注公众号【芋道源码】。?关注后&#xff0c;拉你进【源码圈】微信群讨论技术和源码。友情提示&#xff1a;欢迎…

某政府网站信息文章标题、链接、刊布时间等信息获取

目录一、需求信息二、过程感触三、实战code一、需求信息 需要信息&#xff1a; 每个内容下开篇的索引号、发布机构、组配分类、标题、发布时间和链接地址&#xff0c;部分实例如下图&#xff1a; 上图中左侧的目录结构对应的刊布信息中的如下信息&#xff1a; 题外话&#x…

大型分布式网站术语分析 15 条,你知道几条?

点击上方“芋道源码”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;源码精品专栏 精尽 Dubbo 原理与源码专栏( 已经完成 69 篇&#xff0c;预计总共 75 篇 )中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC…

几个大型网站的Feeds(Timeline)设计简单对比

点击上方“芋道源码”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;源码精品专栏 精尽 Dubbo 原理与源码专栏( 已经完成 69 篇&#xff0c;预计总共 75 篇 )中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC…

基于LAMP环境发布一个Discuz论坛网站

一、LAMP是什么 1、LAMP是常见的Web服务器环境解决方案&#xff0c;用于创建和管理Web应用程序的开源开发平台。Linux用作后端操作系统&#xff0c;Apache是​​Web服务器&#xff0c;MySQL是数据库&#xff0c;PHP是脚本语言。 2、LAMP 为 Linux、Apache、MySQL、PHP 的简称…

尾随《大型网站技术架构》作者,从零单排「大数据」

李智慧大佬&#xff0c;《大型网站技术架构》&#xff08;艿艿的架构启蒙读物&#xff09;的作者&#xff0c;豆瓣评分 7.9 分&#xff0c;出了「大数据」专栏。所以&#xff0c;如果你数据量挺大的&#xff0c;可以扫码买一买。如果你数据量不大&#xff0c;但是想膨胀膨胀&am…

大型网站架构演进的五大阶段盘点

点击上方“芋道源码”&#xff0c;选择“设为星标”做积极的人&#xff0c;而不是积极废人&#xff01;源码精品专栏 精尽 Dubbo 原理与源码 69 篇精尽 Netty 原理与源码 61 篇中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDBC 源码解析合集Spring MVC …