session过期什么意思(session有效期)

在互联网中,我们一直提到或接触到认证和授权的概念或名称,那么到底什么是认证呢?什么是授权?它们之间有什么联系和区别?这个系列将记录我最近的学习和实践,以加深我的

在互联网中,我们一直提到或接触到认证和授权的概念或名称,那么到底什么是认证呢?什么是授权?它们之间有什么联系和区别?这个系列将记录我最近的学习和实践,以加深我的理解。

让我们一起来认识一下认证和授权这两个词。有没有发现什么特点?刚接触他们的时候,我分不清这两个词的意思(其实我英语很差)。直到后来的学习中经常遇到这两个词,你可能会在下面的文章中经常看到,我才明白这两个词的意思。

1.1 什么是认证

在互联网中,我们每天都在使用各种各样的app和网站。在使用它们的过程中,我们通常会遇到需要注册和登录的情况。你只有输入你的用户名和密码才能正常使用它们,也就是说,你只有作为这个应用的合法身份才能访问这个应用的资源。这个过程就是认证。当然,认证的方式也有很多种,比如常用账号密码登录、手机验证码登录、指纹登录、刷脸登录等等。

1.2 什么是会话

当会话用于认证时,有必要将会话保持在用户认证状态,以避免用户的每次操作。有许多常见的认证会话机制,如会话认证和令牌认证。

基于会话的身份验证模式

用户认证成功后,服务器上生成的用户相关数据将保存在当前会话中,发送给客户端的会话ID将存储在cookie中。这样,当用户向客户端请求时,可以取session ID来验证服务器上是否有session文档,从而完成对用户的合法验证。当用户注销系统或会话过期并被销毁时,客户端的会话ID将无效。

session过期什么意思(session有效期)插图

Session.jpg

基于令牌的认证方法

用户认证成功后,服务器生成一个令牌并发送给客户端。客户端可以将它存储在cookie或localStorage中,并在每次请求时携带令牌。收到令牌后,服务器可以确认用户的身份。

session过期什么意思(session有效期)插图(1)

token.jpg

基于会话的认证由Servlet规范定制,服务器需要占用内存资源存储会话信息,客户端需要支持cookie

基于令牌的方法一般不需要服务器存储令牌,也不限制客户端的存储方式。现在移动互联网时代,需要访问系统的客户端类型更多,系统多采用前端分离的架构实现,基于令牌的方式更适合。

1.3 什么是授权

它是授权用户在身份验证后根据其角色获得资源访问权限的过程。如果他们有访问资源的权限,他们会正常访问资源,如果没有访问权限,他们会拒绝访问资源。比如视频网站的VIP用户可以查看普通用户看不到的资源信息。

1.4 授权的数据模型

在授权的过程中,我们需要知道如何控制用户访问的资源以及一些简单的授权数据模型。

授权可以非常简单地理解为谁做什么以及如何做。

Who 即主体(Subject),一般指用户,也可以是应用程序What 即资源(Resource),例如商品信息,订单信息,页面按钮或程序中的接口等信息。How 即权限(Permission),规定了用户或程序对资源操作的许可。例如普通用户只能查看订单,管理员可修改或删除订单,这是因为普通用户和管理员用户对订单资源的操作权限不一样。

通常,与主题、资源和权限相关的数据模型通常包括以下几个部分

主体Subject(用户ID,账号,密码…)资源Resource(资源ID,资源名称,访问地址…)权限Permission(权限ID、权限标识、权限名称,对应的资源ID…)角色Role(角色ID,角色名称…)

session过期什么意思(session有效期)插图(2)

授权型号1.jpg

你会发现权限包含一个资源ID,多个权限可以指向一个资源。可以直接把资源信息包含在权限信息里吗?当然这也是很多企业开发中的做法,把权限和资源组合成权限(权限ID,权限ID,权限名称,资源名称,资源访问地址,…)

session过期什么意思(session有效期)插图(3)

授权型号2.jpg

1.4 RBAC设计模型1.4.1 基于角色的访问控制

基于角色的访问控制(RBAC)是通过角色进行授权。

比如当用户的角色是总经理时,可以查询公司某个员工的工资,可以用伪代码表示。

if(subject . has role(& # 34;总经理ID & # 34){//查询员工工资}现在突然有个需求,公司的部门经理也可以查员工工资。我们做什么呢再补充一个判断就好了。

if(subject . has role(& # 34;总经理ID & # 34)| | subject . has role(& # 34;经理角色ID & # 34){//查询员工工资}这个时候我们发现了一个问题。当我们修改角色的权限时,需要修改授权相关的代码,系统扩展性差。

1.4.2 基于资源的访问控制

RBAC(基于资源的访问控制)是由资源(或权限)授权的。

和上面的需求是一样的,这时我们的代码变成了

if(subject . has permission(& # 34;查询员工薪资的权限& # 34){//查询员工薪资}当那些行政主管角色的用户需要查询员工薪资时,我们只需要为行政主管角色增加一个查询员工薪资的权限,不需要修改授权相关的代码,这样增强了系统的可扩展性。

来自:https://www . wujiwen . cn/2020/03/28/spring/security/security-cap 01/

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/93837.html

发表回复

登录后才能评论