Friparia Blog

Do more

信息系统中的权限控制(一):基于业务逻辑

| Comments

互联网不断地发展,为信息的共享提供了一个更加完善的解决方案,提供了一个信息更加对等的环境。但是,我们不能无条件的扩散信息,一些敏感信息不能够对非授权用户提供,所以我们就需要对我们的信息系统进行访问控制,来保证企业等在信息系统中储存和处理的信息的安全。最近在对信息系统做一套访问控制,结合以前的开发,大概总结了一下几种权限控制的方法:基于业务逻辑、基于层级、基于角色、基于资源等权限控制方法,我们由最简单的基于业务逻辑的入手,对他们进行一个详细的讨论。

基于业务逻辑的权限控制

基于业务逻辑的权限控制其实是最容易理解的,就是哪里需要权限控制就去哪里具体实现我自己的代码,比如我们对某个页面,某个操作进行控制,只能某些人进行访问,只能在逻辑代码前再贴上自己的权限控制逻辑

SomePage.php
1
2
3
4
5
6
<?php
if(!checkAuth()){
  die(403);//somebody that can not visit
}
//do something 
?>

或者在具体某个地方再进行判断

SomeOtherPage.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//some classic php operation
$action = $_GET['action'];
switch($action){
  case 'action_one':
    //some thing
    break;
  case 'action_two':
    if(!someCheck()){
      die(403);
    }
    //access controlled thing
    break;
  default:
    //other thing
}

如果我们的信息系统比较容易,用户的分类也比较单一(比如就只有管理员和用户),我们就可以使用这种简单粗暴的方法进行权限控制,在这种时候,我们的基本上是比较低的,不管是需要写的代码还是需要思考的时间。但是,这个在软件工程中有一种非常明显的缺陷,就是几乎没有扩展性和维护性,要想对某个页面进行权限控制,基本上靠复制粘贴。

当我们的信息系统变得庞大起来时,我们的技术部门的人员不仅仅是两三个人的时候,我们就需要更加灵活、方便的权限控制方式,这时候基于业务逻辑的权限控制就显现出了其局限性,我们如果继续采用基于业务逻辑的权限控制的话,那么我们的代码就会变得异常庞大,变得不易维护,而且也不利于多人开发,我们就需要一个更加优秀的模型来替代这种权限检查的方式,这就是我们下次将会提到的基于层级的权限控制。

Comments

Recent Posts

GitHub Repos

  • Status updating...