阿里大牛的分享(干货)——Spring-Security-Myb

2018-03-01  本文已影响66人  宇哥聊AI

前言

按照惯例,先上项目源代码:

Github: spring-security-mybatis-demo

项目ER图如下所示:

看完ER图,相信各位应该能清楚一件事情:

跟传统的RBAC相比,这里没有A(Access)。

我们只对用户进行角色的区分,具体哪一个角色具备哪些权限,由注解来决定,如:

@PreAuthorize("hasRole('ROLE')")

运行

首先,请给项目Demo一颗Star ^-^ (不然会有人在后面画圈圈诅咒你)

这个项目对用户做了区分:个人用户和企业版用户。

具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加群。java架构群:582505643 一起交流。

个人用户

授权路径: auth/personal

授权刷新路径:refresh/personal

授权登录名:User表下的手机号码

个人用户授权

个人用户使用手机号码及密码在auth/personal下获取他们的授权token:

授权成功后,个人用户只会有一个角色,就是:PERSONAL。

这意味着其他角色的API该个人用户将无法访问。(报401错误,当然,您可以自行修改错误代码,比如返回登录页面)

同时也意味着,每一个用户,可以拥有多个角色,这将有助于我们对角色等级的划分进行区分。

比如,最高等级的BOSS用户,也将同时是一个MANAGER用户,同时也是一个EMPLOYEE用户。

这样设计的好处在于,我们在进行权限判断的时候,只需考虑最低等级的权限,高权限的用户直接可以调用。

个人用户认证

个人用户获取他们的Token之后,在使用中,只需要向请求Header中,添加一个”Authorization”,其值应该设置为:”Bearer “ + ${token},请注意这里有一个空格的存在。

企业版用户

企业用户使用邮箱及密码在auth/Company下获取他们的授权token:

对于企业用户而言,默认的SQL对角色设置了三个:BOSS、MANAGER、EMPLOYEE,对于离职员工而言,只需要在User表下的isenabled中设置为0即可。

当然,您也可以自行进行角色的扩展,数量不受限制。

具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加群。java架构群:582505643 一起交流。

企业用户授权

这里以BOSS角色的帐号进行授权演示:

如果您是一名Manager用户,那么获取Token的过程就会是:

企业用户认证

企业用户获取他们的Token之后,在使用中,只需要向请求Header中,添加一个”Authorization”,其值应该设置为:”Bearer “ + ${token},请注意这里有一个空格的存在。

这一点与个人用户的登录是一致的。

接下来的使用就比较简单了:

BOSS用户调用他的专属API:

经理调用他的专属API:(当然,BOSS也是可以调用的,因为在User_role表中,请注意看,我们的BOSS用户拥有其他所有角色的roleID)

经理想调用BOSS的专属API:

上一篇下一篇

猜你喜欢

热点阅读