Skip to content
  • Authentication(认证) 是验证您的身份的凭据(例如用户名/用户 ID 和密码),用户是否存在。

  • Authorization(授权) 发生在 Authentication(认证) 之后,访问系统的权限,用户是否时管理员。

  • RBAC (Role-Based Access Control 基于角色的权限访问控制):一种通过角色关联权限,

    • 一个用户可以拥有若干角色,
    • 每一个角色又可以被分配若干权限,
    • 多对多的关系。
    • 五张表:
      • 用户表
      • 角色表
      • 按钮表
      • 用户角色关系表
      • 角色按钮关系表

Cookie

  • 存放在客户端,保存认证信息等,
  • F12 -> Application -> Cookie 查看当前域名下的Cookie
  • 只要请求了就会被浏览器自动携带,容易泄露造成 CRSF

Session

  • 存放在服务端记录用户的状态,登录后服务器返回,下次通过 sessionId 验证身份。
  • 相对 Cookie 安全性更高。

多服务器节点下 Session-Cookie 方案如何做

  • 某个用户的请求通过哈希策略分配给同一个服务器处理。
    • 如果服务器宕机,所有登录数据丢失。
  • 服务器通过同步将登录信息给到其他服务器,成本很高。
  • 使用Redis缓存。

如果没有 Cookie 如何使用 Session

  • 含义:用户设置网站存储和读取 cookie 信息
  • 方案:
    • Url拼接:将 SessionID 放在请求的 url 里面
    • 使用单独的隐藏表单进行发送
    • 使用localStorage进行存储和读取发送,前端处理,不会直接发送 跨域请求 后端设置 Access-Control-Allow-Origin : *

防抖

  • 前端:通过setTimeout,即一段时间内只会发送一次请求,并且配合clearTimeout,这样用户连续多次点击,只会发送一次请求
    • 每次点击会清除延时,重新开始,即上一次的请求并没有发送

URI 和 URL 的区别是什么?

  • URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
  • URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。

URI 的作用像身份证号一样,URL 的作用更像家庭住址一样。URL 是一种具体的 URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

什么情况下调用 doGet()和 doPost()

Form 标签里的 method 的属性为 get 时调用 doGet(),为 post 时调用 doPost()。

转发(Forward)和重定向(Redirect)的区别

转发(Forward)

  • 服务器行为,服务器内部处理
  • URL 不会发生变化
  • 共享数据
  • 效率较高
  • 例子:不同角色需要不同的数据 重定向(Redirect)
  • 客户端行为,服务器返回 3xx 状态码,服务器重新请求新网址
  • URL 显示为新的网址。
  • 重新请求,数据不一样了,甚至于服务器不一样了
  • 效率较低
  • 例子:用户注销登录、登录后跳转到新的页面。

正在精进