当前位置: 首页 > news >正文

南山的网站建设张掖seo

南山的网站建设,张掖seo,卡通网站建设,网站做多长时间才会有流量目录 认证 (Authentication) 和授权 (Authorization)的区别是什么? RBAC 模型了解吗? 什么是 Cookie ? Cookie 的作用是什么? 如何在项目中使用 Cookie 呢? 如何在 Spring Boot 中创建和读取 Cookie 创建 Cookie Cookie 到期日期 安全…

目录

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

RBAC 模型了解吗?

如何在 Spring Boot 中创建和读取 Cookie

安全 Cookie

读取所有 Cookie

总结


这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。

说简单点就是:

  • 认证 (Authentication): 你是谁。
  • 授权 (Authorization): 你有权限干什么。

稍微正式点(啰嗦点)的说法就是:

  • Authentication(认证) 是验证您的身份的凭据(例如用户名/用户 ID 和密码),通过这个凭据,系统得以知道你就是你,也就是说系统存在你这个用户。所以,Authentication 被称为身份/用户验证。
  • Authorization(授权) 发生在 Authentication(认证) 之后。授权嘛,光看意思大家应该就明白,它主要掌管我们访问系统的权限。比如有些特定资源只能具有特定权限的人才能访问比如 admin,有些对系统资源操作比如删除、添加、更新只能特定人才具有。

认证:

                                         比如像qq 我们常见的登录就都是认证

 

 

授权:

没有权限

                                                                没有权限

这两个一般在我们的系统中被结合在一起使用,目的就是为了保护我们系统的安全性。

 

RBAC 模型了解吗?

系统权限控制最常采用的访问控制模型就是 RBAC 模型

什么是 RBAC 呢? RBAC 即基于角色的权限访问控制(Role-Based Access Control)。这是一种通过角色关联权限,角色同时又关联用户的授权的方式

简单地说:一个用户可以拥有若干角色,每一个角色又可以被分配若干权限,这样就构造成“用户-角色-权限” 的授权模型。在这种模型中,用户与角色、角色与权限之间构成了多对多的关系。

 

    

 

在 RBAC 权限模型中,权限与角色相关联,用户通过成为包含特定角色的成员而得到这些角色的权限,这就极大地简化了权限的管理。

为了实现 RBAC 权限模型,数据库表的常见设计如下(一共 5 张表2 张用户建立表之间的联系):

 

        通过这个权限模型,我们可以创建不同的角色并为不同的角色分配不同的权限范围(菜单)。 

         

通常来说,如果系统对于权限控制要求比较严格的话,一般都会选择使用 RBAC 模型来做权限控制。

 

CookieSession 都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

维基百科是这样定义 Cookie 的:

Cookies 是某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。

简单来说:Cookie 存放在客户端,一般用来保存用户信息

下面是 Cookie 的一些应用案例:

  1. 我们在 Cookie 中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了。除此之外,Cookie 还能保存用户首选项,主题和其他设置信息。
  2. 使用 Cookie 保存 SessionId 或者 Token ,向后端发送请求的时候带上 Cookie,这样后端就能取到 Session 或者 Token 了。这样就能记录用户当前的状态了,因为 HTTP 协议是无状态的。
  3. Cookie 还可以用来记录和分析用户行为。举个简单的例子你在网上购物的时候,因为 HTTP 协议是没有状态的,如果服务器想要获取你在某个页面的停留状态或者看了哪些商品,一种常用的实现方式就是将这些信息存放在 Cookie
  4. ……

我这里以 Spring Boot 项目为例。

)设置 Cookie 返回给客户端

@GetMapping("/change-username")
public String setCookie(HttpServletResponse response) {// 创建一个 cookieCookie cookie = new Cookie("username", "Jovan");//设置 cookie过期时间cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days//添加到 response 中response.addCookie(cookie);return "Username is changed!";
}

2) 使用 Spring 框架提供的 @CookieValue 注解获取特定的 cookie 的值

@GetMapping("/login")
public String readCookie(@CookieValue(value = "username", defaultValue = "Atta") String username) {return "Hey! My username is " + username;
}

3) 读取所有的 Cookie

@GetMapping("/all-cookies")
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";
}

 

如何在 Spring Boot 中创建和读取 Cookie

要在 Spring Boot 中设置 cookie,我们可以使用类中的方法。您需要做的就是创建一个新实例并将其添加到响应中,如下所示:addCookie()HttpServletResponseCookie

@GetMapping("/change-username")
public String setCookie(HttpServletResponse response) {// create a cookieCookie cookie = new Cookie("username", "Jovan");//add a cookie to the responseresponse.addCookie(cookie);return "Username is changed!";
}

 

如果没有为 Cookie 指定过期时间,则只要会话未过期,它就会持续存在。此类 Cookie 称为会话 Cookie。会话 Cookie 将保持活动状态,直到用户关闭浏览器或清除 Cookie。上面创建的 cookie 实际上是会话 cookie。username

但是你可以覆盖这个默认行为,并使用类的方法设置 cookie 过期时间:setMaxAge()Cookie

// create a cookie
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days//add a cookie to the response
response.addCookie(cookie);

现在,cookie 将在接下来的 7 天内保持活动状态,而不是在浏览器关闭时过期。在指定日期和时间过期的 Cookie 称为永久 Cookieusername

注意:传递给 method 的过期时间以秒为单位。到期日期和时间是相对于设置 Cookie 的客户端(而不是服务器)的。setMaxAge()

安全 Cookie

安全 Cookie 仅通过加密的 HTTPS 连接发送到服务器。安全 Cookie 无法通过未加密的 HTTP 连接传输到服务器。

要制作 cookie ,请使用以下方法: 

// create a cookie
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days
cookie.setSecure(true);//add a cookie to the response
response.addCookie(cookie);

浏览器中的是什么:
HttpOnly标志是一个安全特性,由服务器通过设置在HTTP响应头中的Set-Cookie字段来启用。启用后,
它告诉浏览器这个特定的Cookie应该对客户端的JavaScript代码不可访问,以防止例如跨站脚本(XSS)的攻击者通过脚本窃取Cookie信息。虽然HttpOnly不是全面防护措施,但它显著增加了攻击者盗取用户会话的难度。
 

如果为 Cookie 设置了该属性,则客户端脚本无法访问该属性。例如,您不能使用 property 访问 JavaScript 中的 Cookie。

// create a cookie
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days
cookie.setSecure(true);
cookie.setHttpOnly(true);//add a cookie to the response
response.addCookie(cookie);

这是保护 cookie 不被恶意代码或跨站点脚本 (XSS) 攻击更改的一种方法。

该属性指定应将 Cookie 发送到服务器的 URL 路径。默认情况下,如果未指定路径,则仅将 Cookie 发送到用于在浏览器中设置该 URL 的服务器。Path

您可以使用该方法为 cookie 设置指令:setPath()  

// create a cookie
Cookie cookie = new Cookie("username", "Jovan");
cookie.setMaxAge(7 * 24 * 60 * 60); // expires in 7 days
cookie.setSecure(true);
cookie.setHttpOnly(true);
cookie.setPath("/"); // global cookie accessible every where//add a cookie to the response
response.addCookie(cookie);

通过显式设置该指令,cookie 将被传送到指定的 URL 及其所有子目录。Path

Spring 框架提供 Comments 来获取任何 HTTP cookie 的值,而无需迭代从请求中获取的所有 cookie。此 Comments 可用于将 cookie 的值映射到控制器方法参数:@CookieValue

@GetMapping("/")
public String readCookie(@CookieValue(value = "username", defaultValue = "Atta") String username) {return "Hey! My username is " + username;
}

 在上面的代码片段中,请注意 .如果未设置默认值,则 Spring 将在 HTTP 请求中找不到具有该名称的 cookie 时引发异常。defaultValue = "Atta"java.lang.IllegalStateExceptionusername

读取所有 Cookie

除了使用注解,我们还可以将类用作控制器方法参数来读取所有 cookie。此类提供了将浏览器发送的所有 Cookie 作为 .@CookieValueHttpServletRequestgetCookies()Cookie

 

@GetMapping("/all-cookies")
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,您需要创建具有相同名称和指令 to 的类的新实例,然后再次将其添加到响应中,如下所示:CookieMax-Age0

// create a cookie
Cookie cookie = new Cookie("username", null);
cookie.setMaxAge(0);
cookie.setSecure(true);
cookie.setHttpOnly(true);
cookie.setPath("/");//add a cookie to the response
response.addCookie(cookie);

总结

Cookie 提供了一种在服务器和浏览器之间交换信息的方法,以管理会话(登录、购物车、游戏分数)、记住用户偏好(主题、隐私政策接受度)并跟踪整个网站的用户行为。

Spring Boot 提供了一种读取、写入和删除 HTTP cookie 的简单方法。

  1. @CookieValue annotation 将 cookie 的值映射到 method 参数。您应该设置默认值,以避免在 Cookie 不可用时出现运行时异常。
  2. HttpServletResponse类可用于在浏览器中设置新的 Cookie。您只需创建一个实例并将其添加到响应中。Cookie
  3. 要读取所有 cookie,您可以使用 '方法,该方法返回一个数组 .HttpServletRequestgetCookies()Cookie
  4. Max-Agedirective 指定 cookie 过期的日期和时间。
  5. 如果要在 Cookie 中存储敏感信息,请确保设置 and 属性以避免 XSS 攻击。SecureHttpOnly
  6. 设置 使 Cookie 在当前域的所有位置均可访问。Path=/
  7. 要删除 Cookie,请将 设置为 to 并传递您首次设置它时使用的所有属性。Max-Age0
http://www.hkea.cn/news/58343/

相关文章:

  • 赤峰网站建设公司旅行网站排名
  • seo网站优化工具软件拉新推广平台
  • 政府网站设计方案无锡网站制作优化
  • 社交网站盈利吗如何在各种网站投放广告
  • 建设工程合同民法典东莞快速优化排名
  • 泗县口碑营销互联网营销推荐咨询青岛seo计费
  • 做电影网站用什么服务器中文域名注册官网入口
  • 做网站那里好win10系统优化工具
  • 做外贸上哪些网站找客户口碑营销的概念是什么
  • 外贸建站magento百度地图推广
  • 做网站和管理系统全网热度指数
  • 网站的压力测试怎么做网络营销的目的是什么
  • 网站建设如何更加稳定seo优化前景
  • 网站速度诊断 慢seo chinaz
  • 企业网站建设合同搜索引擎优化关键词的处理
  • 做翻译的网站私人做网站
  • 广东两学一做考学网站百度网盘app免费下载安装老版本
  • 淄博有做网站的吗百度推广有哪些形式
  • 增值税怎么算免费seo快速排名系统
  • 响应式电商网站制作全网
  • 国内b2b网站a片长春做网站推广的公司
  • 网页制作视频的网站建设引擎优化seo怎么做
  • 吉林省建设厅证件查询网站今日热搜
  • 做熟食的网站美食网站搜索引擎推广方案案例
  • 企业模板网站推广优化平台
  • 赣州做网站的网站优化技术
  • 设计网站大全网公司推广咨询
  • 北京网站建设价格上海关键词排名优化公司
  • 浙江华临建设集团有限公司网站seo优化网站词
  • 服装网站建设规划书范文免费的行情网站