1.认证和授权

1.1 首先二者的读法不同

认证: Authentication

授权: Authorization

1.2  认证和鉴权是什么?

从简单的角度来说:

认证: 理解为你是谁

授权: 理解为你有哪些权限能干什么

从正经的角度来说:

认证:是验证您的身份的凭据(例如用户名/用户ID和密码,通过这个凭据,系统知道你就是你自己,也就说 系统存在你这个用户,所以,认证被称为身份/用户验证。

授权:实在认证之后的操作,掌管访问系统的权限,比如vip的权限可以访问vip的资源,对资源操作删除啊,添加啊的权限。

使用它们是为了保护我们系统的安全性。

2. Cookie 和 Session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie     通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

Web应用程序是基于HTTP协议进行数据传输,HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录。一旦客户端和服务端的数据交互完后,就会断开连接,再次进行数据 交互的需要再次建立新的连接。而Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。

例如: 即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的 会 话了。要跟踪该会话,必须引入一种机制。

2.1  cookie

Cookie是什么:

服务器单从网络连接上无法知道客户端是谁,这样会造成会话跟踪失败的问题。那么就会给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户是谁了。这就是Cookie。
              Cookie的定义:

Cookie是某些网站为了辨别用户身份而储存在用户本地终端上的数据。

Cookie的用处:

Cookie存储在客户端,一般用于存储用户信息。

Session怎么保证是同一个会话请求?

服务器第一次接收到请求时,会创建Session对象,同时创建成一个 sessionId 。Java中把Cookie封装成了,javax.servlet.http.Cookie类,服务器通过操作Cookie类对象对客户端Cookie进行操作。向客户端发送要求设置                          Cookie 的响应, 客户端收到响应后,在本机客户端保留 Cookie 信息,该 Cookie 的过期时间为浏览器会话结束。

Cookie类的代码:

@GetMapping("/username")
public String setCookie(HttpServletResponse response) {Cookie cookie = new Cookie("username", "Jovan");cookie.setMaxAge(7 * 24 * 60 * 60); response.addCookie(cookie);return "success";
}
@GetMapping("/cookiesAll")
public String readAllCookies(HttpServletRequest request) {Cookie[] cookies = request.getCookies();if (cookies != null) {return Arrays.stream(cookies).map(c -> c.getName() + "=" + c.getValue()).collect(Collectors.joining(", "));}return "No cookies";
}

Cookie的不可跨域性

例如,京东会向客户端发放京东Cookie,淘宝也会向客户端发放淘宝Cookie。那浏览器访问京东会不会也携带上淘宝发放的Cookie呢?

不会。Cookie具有不可跨域性,访问京东就只能带京东的cookie。

Cookie在客户端是由浏览器来管理的。浏览器能够保证京东只会操作京东的Cookie,而不会操作淘宝的Cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。

2.2 Session

Session是什么:

Session是另一种记录客户状态的机制,Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。

Session是服务器端使用的一种记录客户端状态的机制

Session的定义:

Session相当于程序在服务器上建立的一份客户端信息档案,客户端请求的时候只需要查询客户端档案就可以了。

Session的用处:

Session保存在服务器上记录客户端状态。

//使用request对象的getSession()获取session,如果session不存在则创建一个
HttpSession session = request.getSession();
//获取session的Id
String sessionId = session.getId();
//判断session是不是新创建的
if (session.isNew()) {response.getWriter().print("session创建成功,session的id是:"+sessionId);
}else {response.getWriter().print("服务器已经存在session,session的id是:"+sessionId);
}

Session的有效期

由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

Session的超时时间为maxInactiveInterval属性,

可以通过对应的getMaxInactiveInterval()获取,

通过setMaxInactiveInterval(longinterval)修改。

认证(Authentication),授权(Authorization) 以及Cookie、Session相关推荐

  1. Cookie + Session登录-Token登录-SSO 单点登录-OAuth 第三方登录

    文章目录 1.Cookie + Session 登录 2. Cookie + Session 存在的问题 3.Token 登录认证 1. Token 机制实现流程 2. Token 机制的特点 3. ...

  2. shiro安全框架初识--shiro简介、认证与授权

    1.shiro安全框架 1.1.什么是权限管理 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只 ...

  3. 一问带你区分清楚Authentication,Authorization以及Cookie、Session、Token

    很多人可能对权限认证领域一些常见的概念都不是特别了解,所以写了篇文章专门介绍一下这些概念. 1. 认证 (Authentication) 和授权 (Authorization)的区别是什么? 这是一个 ...

  4. .net中的认证(authentication)与授权(authorization)

    注:这篇文章主要给新手看的,老手们可能会觉得没啥营养,就请绕过吧. "认证"与"授权"是几乎所有系统中都会涉及的概念,通俗点讲: 认证(authenticati ...

  5. 越权、cookie与session、认证和授权

    越权修改 疑问开始 例子 黑盒 白盒 修复后的代码 session session id 是从哪里开始就有的 session 保存在哪 session_start等函数所做的实际操作是什么 测试会话固 ...

  6. 使用cookie和session实现用户的认证和授权(原生方式,不使用安全框架)

    在学习springsecurity和shiro等安全框架之前可以使用原生的方式,基于cookie和session实现原生的认证,有利于加强对框架学习的理解,也有助于清晰的理解认证和授权的流程,也有助于 ...

  7. Flex与.NET互操作(九):FluorineFx.NET的认证(Authentication )与授权(Authorization)

    FluorineFx.NET的认证(Authentication )与授权(Authorization)和ASP.NET中的大同小异,核实用户的身份既为认证,授权则是确定一个用户是否有某种执行权限,应 ...

  8. 谈谈系统认证 (Authentication) 和授权 (Authorization)

    这是一个绝大多数人都会混淆的问题. 说简单点就是: 认证 (Authentication): who,你是谁 授权 (Authorization): what,你有权限干什么 稍微正式点的说法就是: ...

  9. 认证 (Authentication) 和授权 (Authorization)的区别是什么?

    说简单点就是: 认证 (Authentication): 你是谁. 授权 (Authorization): 你有哪些权限 干什么事情. 稍微正式点(啰嗦点)的说法就是: Authentication( ...

最新文章

  1. 博士申请 | 普渡大学郭齐教授组招收计算成像全奖博士生
  2. 浅谈javaweb三大框架和MVC设计模式
  3. java源码文件丢恢复需要多少钱,上岸蚂蚁金服!
  4. [JZOJ 5911] [NOIP2018模拟10.18] Travel 解题报告 (期望+树形DP)
  5. 关于自定义脚本rc.local里开机不启动的问题--以tomcat和perl相关的脚本为例
  6. 【信息系统项目管理师】第10章 上篇-项目沟通管理 知识点详细整理
  7. 刪除主表中不存在記錄的從表資料
  8. OpenNLP-引言
  9. Unity安卓开发环境搭建
  10. oracle存储过程插表,oracle 一张表插入另外一张表 存储过程
  11. 装系统提示缺少计算机所需的介质驱动程序,win8系统UEFi安装提示“缺少计算机所需的介质驱动程序”的图文步骤...
  12. JAVA后端调用微信支付“统一下单”接口实现微信二维码扫码支付
  13. 家庭收支记账软件项目【Golang-面向对象】
  14. vim配置——MA6174
  15. IP 地址 与硬件地址
  16. 【C语言】输出国际象棋棋盘
  17. 劲霸男装四十年:“真男人”成“老男人”还能如何劲霸?
  18. iPhone升级系统 死机了怎么办
  19. 联想笔记本Y430p升级硬件(内存扩容+升级固态)
  20. 西门子1200PLC和Modbus485从站设备通讯

热门文章

  1. 誓约-markdown编辑器学习
  2. C语言构造函数和释构函数,c++基础语法:构造函数与析构函数
  3. IT只忍者龟Photoshop简单人像的头发抠图过程
  4. 规则引擎-IBM ODM(ILog)
  5. wooyun常见ssrf总结+常见ssrf绕过姿势
  6. Green++“绿多多”绿色资产的2019猪年贺岁词 | 复联复兴者联盟FUND++
  7. python 通过电话号码获取微信性别信息
  8. MySQL中的时间类型
  9. 摄影爱好小白的小福利,安利手机P图软件
  10. 商品上架难?那是你没用对方法