基于MVC框架实现权限控制简介

       引言

  在前几天师哥找到我们让我们给项目加上权限控制,当时在我们印象中权限是一个非

常神圣的系统,它应该是独立在其他系统之外单又控制着其他系统的一个东西,在和师

哥交流的过程中,需求这样的:我们不需要一个非常精细的权限控制,我们首先做一个

比较简单的就可以,但是需要将这个权限做活,不能像我们机房收费系统里面那样死

板,别的什么要求都没有,这就是我们接触权限的前提,所以自己就用了大概3天的时间

开始查资料并且实现了一个比较简单的权限管理功能。
 
   简介

 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问

自己被授权的资源,不多不少。  在大家的概念中也许存在着这样一种错误的认识,就是

将我们的“用户身份验证”,“密码加密”“系统管理”等概念误认为这就是我们说的

权限管理。但是这些问题根本就不属于权限管理的范畴。
 
 用户身份认证:是要解决这样的问题:用户告诉系统“我是谁”,系统就问用户凭什么

证明你就是“谁”呢?对于采用用户名、密码验证的系统,那么就是出示密码。当用户

名和密码匹配,则证明当前用户是谁;对于采用指纹等系统,则出示指纹;对于硬件Key

等刷卡系统,则需要刷卡。

  密码加密:是隶属用户身份认证领域,不属于权限管理范畴。
  
 系统管理:一般是系统的一个模块。而且该模块一般还含有权限管理子模块。因此,很

多人误认为权限管理系统只是系统的一个小小的子模块。系统管理里面的权限管理模

块,只是一个操作界面,让企业IT管理员能够设置角色等安全策略。系统背后还有很多

权限验证逻辑,这些都并不属于该模块。总体来说,该模块相当于给权限管理模块提供

了一些数据,比如:张三是人力资源经理等。

  实现方法

 基于MVC框架实现权限控制大概有这么几种思路:“用户身份验证”、“控制器方法权

限控制”、“界面元素权限控制”这三种方式可以为Web开发框架本身提供了很好用户访

问控制和权限控制,使得用户界面呈现菜单、Web界面的按钮和内容、Action的提交控

制,均能在总体权限功能分配和控制之下。

                 基于MVC框架实现权限控制简介_第1张图片
  【用户身份验证】

  注:这里的用户身份验证并不是简单的验证用户名和密码是否正确,而是在这个基

础上获取用户的权限信息,从而达到权限控制的目的。

  这种方法可以实现比较粗的权限控制,在我们这个系统中我就采用了这种方法,下面

就和大家分享一下:

  业务逻辑:在用户登录系统的时候获取用户的权限级别(一般用户,操作员等),然

后根据用户级别获取到此用户级别可以操作的功能项,然后根据可以操作的功能项来动

态的加载和移除功能菜单。下面给大家分享一下动态加载和移除菜单的js代码
 
//基本配置 0——权限管理,3——投标管理,4——用户管理,5——招标文件管理,6——专家管理
//7——签到

//动态的移除DIV

var bb = new Array();
bb= ['投标管理', '用户管理', '招标文件管理', '专家管理', '签到'];
function IsShow(i) {


    var container = document.getElementById("aa");

    if (container.childNodes.length > 0) {
        var childNodes = container.childNodes;
        while (childNodes[i].nodeType == 3) {
            container.removeChild(container.childNodes[i]);
        }
        container.removeChild(container.childNodes[i]);
    }
}


$(document).ready(function () {
    //动态控制权限配配置菜单是否可见
    $.post('/Role/GetRoleInfo', {}, function (result) {
        if (result != "超级管理员") {
            IsShow(0);
        }
    });

    $.post('/Role/getOperateContentByRoleName', {}, function (result) {
        //var bb = new Array();
        //bb = ['投标管理', '用户管理', '招标文件管理', '专家管理', '签到'];
        var tempOperateContent = result.split(",");
        //alert(tempOperateContent);
        for (var j = 0; j < 5; j++) {

            var m = $.inArray(bb[j], tempOperateContent);

            if (m==-1) {
                IsShow(j+3);
            }
            
        }

    });
});

这样就可以基本实现了一个简单的权限控制,但是这样的权限控制是不够的,因为这样

我们只是在前台控制了我们的权限,不知道大家有没有想过这个问题,就是如果我们没

有经过登录界面而是直接获取了主界面的URL地址,这样我们的前台界面控制就没有作用

了,所以说我们需要前台和后台的结合,这时候我们就用到了第二种方法和第三中方

法。后面的这两种方法会在接下来的博客中分享。

 小结
 在这个项目中自己接触到了很多新的东西,但是自己都不是很好的了解他们,现在只是

达到了会用的阶段,但是里面很多的东西都是比较陌生的,这样就导致了自己下代码调

错的时候比较盲目,因为我们不能很好的明白里面的运行就机制,所以在接下来的时间

了需要巩固一下基础知识,让自己接触到的比较新的知识变为自己熟悉的知识。
     

你可能感兴趣的:(mvc)