你的位置:首页 > 软件开发 > ASP.net > 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

尝试asp.net mvc 基于controller action 方式权限控制方案可行性

发布时间:2016-09-26 15:00:14
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方便,使之程序员把更多的精力投入到业务中来。很多时候我就在想,是不是该把传统的用户 ...

微软在推出get='_blank'>mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方便,使之程序员把更多的精力投入到业务中来。

很多时候我就在想,是不是该把传统的用户权限管理换个方式了呢?换成MVC AOP的思想权限控制,诸如controller action这种方案行的通吗?答案是肯定的,人的思想永远是第一位!

1.基于controller action控制权限的好处

其实合起来看,controller与action即控制了一个页面的行为,如能是否查看,写入,修改权限,而我们在开发的过程中,这些方法都已完成,这样省去了像传统方式对每个页面重新控制生成的步骤。当前通过反射程序集收集所有的controller action信息,自动化收集权限控制是比较可观的。

2.基于controller action控制权限的方案

权限列表通过反射自动从程序集获取,管理员(默认有最高权限)把权限分配给用户及分配权限分配给角色,管理员对用户分配权限角色权限,如图所示

尝试asp.net mvc 基于controller action 方式权限控制方案可行性

 

用户权限列表及角色权限列表分配成形Controller与Action信息后,通过代码控制对应的控制器及方法是否有权限。

 

3.基于controller action控制权限信息的提取的方案

有些方法不需要提取的,有些方法需要权限控制,为了让程序方便提取权限信息,我们加入特性,如果方法或控制器有此特性,即要控制的,当然为了节约代码,默认特性是false,这样,没有加特性的或者特性是false的,都不用提取!

 

4.基于mvc controller和action 权限管理流程图

 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

不明白的亲们不用太着急,下面开始详细的步骤吧!

 

首先我们通过上面的分析,我们用模型来一点一点的剖析

尝试asp.net mvc 基于controller action 方式权限控制方案可行性

从左至右,相关的模型是,权限信息列表,角色列表,用户信息列表,部门列表,菜单列表

1)一个用户可以有多个权限,一个权限可以分配多个用户,所以是多对多的关系

2)一个角色可以有多个权限,一个权限可以分配多个角色,所以是多对多的关系

3)一个用户可以有多个角色,一个角色可以分配多个用户,所以是多对多的关系

4)一个用户可以有多个部门,一个部门可以分配多个角户,所以是多对多的关系

5)菜单列表,主要针对后台每个用户或角色不同的展示方式,以及可以自定义图片等

 

好了,到此为止,我们开始正式的工作。

由上列模型,我们采用code first生成数据库如何使用 code first 请搜索下百度或将来有专门的章节介绍,这里不再累赘说明!

尝试asp.net mvc 基于controller action 方式权限控制方案可行性

 

我们添加,添加以后几个model类

 

 1)权限控制类:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.ComponentModel;using System.ComponentModel.DataAnnotations;namespace WL.Models.Permission{  [DisplayName("控制权限")]  public class ActionPermission  {    [Key]    [DisplayName("控制权限ID")]    public int ActionPermissonID { set; get; }    [DisplayName("控制权限名称")]    public string ActionPermissionName { set; get; }    [DisplayName("控制器权限名称")]    public string ControllerPermissionName { set; get; }    [DisplayName("说明")]    public string Description { set; get; }    [DisplayName("创建时间")]    public DateTime CreateDate { set; get; }    [DisplayName("操作用户名")]    public string Operator { set; get; }    [DisplayName("最后修改时间")]    public DateTime LateDate { set; get; }    [DisplayName("图标")]    public string Icon { get; set; }    [DisplayName("状态")]    public int State { set; get; }    [Description("用户实体集合")]    public virtual ICollection<User> UserCollection { get; set; }    [Description("角色实体")]    public virtual ICollection<Role> RoleCollection { get; set; }  }}

原标题:尝试asp.net mvc 基于controller action 方式权限控制方案可行性

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。