java 认证和授权_SpringSecurity一:认证和授权

什么是认证?

认证就是取得合法身份,比如京东需要用户登录以后才能才能下订单,这里的登录就是认证。登录成功以后就具有了合法身份可以继续进行下一步的操作。

常用的认证方式

常用的认证方式有基于session的认证和基于token的认证。

先来看一下基于session的认证:

用户登录成功后服务器会将用户的信息保存在session(当前会话)当中,每个session对应有一个sessionid,将该sessionid发送给客户端保存在cookie中。客户端下次访问的时候会将该sessioid带上,在服务器端进行比对看是否存在对应的session以此判断是否登录。

bfc4ffbe17d4c7014e7d4a906b21b5f5.png

再来看基于token的验证:

用户登录成功后服务端生成一个token发送给客户端,客户端将收到的token存储在cookie或localstorage中,下次访问的时候带上token到服务端验证。

e955fce90500ac7fc032bd9f33ad9b57.png

Session和token方式比较:

Sesion的认证方式需要将session存储在服务端,会占用服务端的内存,并且需要客户端开启cookie功能,而基于token的认证方式则不用将token存储在服务端,客户端的保存也比较灵活,现在前后端分离的开发方式越来越流行,所以采用基于token的验证方式更合适。

什么是授权?

用户登录京东以后可以浏览商品,可以加入购物车,可以搜索商品,这些都是京东的功能,也是资源权限,我们说登录用户拥有这些权限,但是如果用户没有绑定银行卡就无法支付,那么没有绑定银行的的用户就不具有支付权限。给用户授予相应功能权限的过程就叫授权,只有授权以后用户才具有了相应的功能权限。

认证的过程是识别用户身份是否合法,而授权是给予已经通过认证的用户功能权限的过程,授权是在认证之后发生的.

RBAC模型

RBAC是基于角色的权限控制,在RBAC里面有三大要素用户、角色和权限:

04f5276d84d13fa5cda24d4ae9c10135.png

用户:用户是权限管理的主体,用户使用系统。

角色:如果给每个用户单独的分配权限会很繁琐,比如多个用户重复分配同一权限,引入角色的概念就会让权限管理更为灵活,我们可以设置多个用户为同一角色,然后给角色分配权限,则该角色下的用户就都拥有了同样的权限,比如:张老师,王老师,李老师都分配老师的角色,给老师分配查询学生信息的权限则所有的老师都拥有了查询学生信息的权限。一个用户也可以分配多个角色,比如:张老师可以既是老师又是学术经理,那么他就同时具备了老师和学术经理的权限。

权限:权限可以分为三类:

数据权限:也就是用户可以看到的数据内容,比如学校管理系统,老师只能看到学生的数据,学术经理可以看到学生和老师的数据。

页面权限:这个部分的权限属于基本的权限范畴,一般系统都会有这个类型的权限,他可以限制用户能访问哪些页面,比如老师可以访问添加作业的页面,不能访问查询其他老师工资的页面,页面权限一般对应的是url地址。

操作权限:控制页面上的按钮,比如添加,修改,删除。

用户和角色是多对多的关系,角色和权限也是多对多的关系。

RBAC的权限控制系统通常对应五张表,举例说明:

用户表:序号字段名称字段类型字段描述

1idvarchar2无意义,主键uuid

2emailvarchar2非空,唯一

3usernamevarchar2用户名

5passwordvarchar2密码(加密)

6phoneNumvarchar2电话

7statusint状态0未开启1开启

角色表:

序号字段名称字段类型字段描述

1idvarchar2无意义,主键uuid

2roleNamevarchar2角色名

3roleDescvarchar2角色描述

权限表:序号字段名称字段类型字段描述

1idvarchar2无意义,主键uuid

2permissionNamevarchar2权限名

3urlvarchar2资源路径

用户角色关系表:序号字段名称字段类型字段描述

1userIdvarchar2用户id(外键)

2roleIdvarchar2角色id(外键)

角色权限关系表:序号字段名称字段类型字段描述

1permissionIdvarchar2权限id(外键)

2roleIdvarchar2角色id(外键)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值