什么是授权
授权:授权是用户认证通过后根据用户的权限来控制用户访问资源的过程,拥有资源的访问权限则正常访问,没有权限则拒绝访问。
为什么要授权:认证是为了保证用户身份的合法性,授权则是为了更细粒度的对隐私数据进行划分,授权是在认证通过后发生的,控制不同的用户能够访问不同的资源。
eg:微信登录成功后用户即可使用微信的功能,比如:发朋友圈,添加好友和视频原创声明功能等,它们都是微信的资源即功能资源。这个根据用户的权限来控制用户使用资源的过程就是授权。
授权的数据模型
授权可简单理解为who对what(which)进行how操作。
who,即主体(subject),主体一般是指用户,也可以是程序,需要访问系统中的资源。
what,即资源(resource),如系统菜单、页面、按钮、代码方法、系统商品信息和系统订单信息等。系统菜单、页面、按钮和代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个URL;系统商品信息、系统订单信息都属于实体资源(数据资源),实体资源由资源类型和资源实例组成,比如商品信息为资源类型,商品编号001的商品为资源实例。
how,权限/许可(permission),规定了用户对资源的操作许可,权限离开资源没有意义,通过权限可知用户对哪些资源都有哪些操作。
主体、资源、权限相关的数据模型如下:
主体(用户id、账号、密码、...)
主体和角色关系(用户id、角色id、...)
角色(角色id、角色名称、...)
角色和权限关系(角色id、权限id)
权限(权限id、权限标识,权限名称、资源id、...)
资源(资源id、资源名称、访问地址、...)
关系如下图:

通常企业开发中将资源和权限表合并为一张权限表,如下:
资源(资源id、资源名称、访问地址、...)
权限(权限id、权限标识、权限名称、资源id、...)
合并为:
权限(权限id、权限标识、权限名称、资源名称、访问地址、...)
修改后的数据模型如下图:





