对于B/S结构都有一个共同的特点,是用户、身份、角色和权限的问题。

我对这四个概念我也是思考了很久,根据我想的东西说一下:

首先看下面几个例子:

用户→身份→角色→权限

把这些概念赋予一个部队的某个班

张三→士兵→炮兵→打炮

李四→士兵→炮兵→装蛋(装弹)

王五→班长→炮兵→指挥打炮、装弹、打炮

赵六→士兵→伙房师傅→给炮兵做饭

以上的例子是存在于某个炮兵班的系统当中,每个用户都有自己的身份和角色,身份和角色决定了他的权限。

用户:进入到系统当中操作的所有人,或者说是虚拟的人。在系统中我们假设每个人只有一个用户名和密码,那么我们每个人在系统中都是一个单独的用户。当然有的时候有一个人有很多用户名和密码,那么他可能在系统中扮演多个身份和角色,不过在他以某个用户名进入系统后我们仍然认为他是一个独立的人。像一个人既可以是教师又可以是奥运志愿者一样,在社会上身份和角色和可以做的事,但是在某个特定的环境中他的身份角色是的。

身份:指在大环境下的具有某个或某些特定功能的群体。所谓大环境是在整个系统中对一个用户的定义,这里主要是具有高权限的系统管理员、管理员和非管理员,有时候管理员可能还分很多种。身份在大环境中一般来说是相对稳定的。这种身份典型的是论坛中,每个版都有自己的斑竹,可以是一个也可以是多个,整个论坛还有权限高的管理员,其他的用户则为非管理员。以上例子中,在这个炮兵班的身份主要是班长和士兵,即简单的系统管理员和非管理员,如果是排有普通管理员这个身份存在了。

角色:只在小环境中或特定环境中一个用户或多个用户指定的身份类型。这个是动态的,也可以说是经常变动的。像演戏一样,演员是一个用户的身份,但是角色却是随着戏的不同经常发生着变化的。在B/S结构系统中经常会存在VIP用户,注册用户,高级用户,普通用户,游客等的角色,他们做能做的东西其实都是非关系管理类的。那么我们说以上的称呼是他们的角色,在论坛中这种情况更加的典型。很多网站积分达到多少或者交了多少多少的钱会被系统允许做什么什么样的操作,其实是在做角色的改变。以上例子中炮兵可以分为(我不懂,瞎说的)装弹员,点火员,擦跑员,运炮车司机等。他们在一次打炮的操作中所做的工作是完全不一样的,只有一个是确定的,他们只能在某一环节中起到作用,却不能从全局进行操控。

权限:所谓权限是权力和限制,说白了是你能在系统中做哪些操作。每个系统都是若干功能,也可以说成是有若干个权限,每种操作无论是针对系统的还是系统中某个部分的都会根据身份和角色不同赋予某一个或某一些用户。所以权限一般不会被一个用户所拥有,在以上的例子中可以看到,不只一个角色可以打炮,也不只一个角色可以装弹,所以权限有的时候是可以交叉使用的。