Authentication(认证) 是验证您的身份的凭据(例如用户名/用户 ID 和密码),用户是否存在。
Authorization(授权) 发生在 Authentication(认证) 之后,访问系统的权限,用户是否时管理员。
RBAC (Role-Based Access Control 基于角色的权限访问控制):一种通过角色关联权限,
- 一个用户可以拥有若干角色,
- 每一个角色又可以被分配若干权限,
- 多对多的关系。
- 五张表:
- 用户表
- 角色表
- 按钮表
- 用户角色关系表
- 角色按钮关系表
Cookie 和 Session
Cookie :
- 存放在客户端,保存认证信息等,
- F12 -> Application -> Cookie 查看当前域名下的Cookie
- 只要请求了就会被浏览器自动携带,容易泄露造成 CRSF
Session :
- 存放在服务端记录用户的状态,登录后服务器返回,下次通过 sessionId 验证身份。
- 相对 Cookie 安全性更高。
多服务器节点下 Session-Cookie 方案如何做
- 某个用户的请求通过哈希策略分配给同一个服务器处理。
- 如果服务器宕机,所有登录数据丢失。
- 服务器通过同步将登录信息给到其他服务器,成本很高。
- 使用Redis缓存。
如果没有 Cookie 如何使用 Session
- 含义:用户设置网站存储和读取 cookie 信息
- 方案:
- Url拼接:将
SessionID放在请求的url里面 - 使用单独的隐藏表单进行发送
- 使用localStorage进行存储和读取发送,前端处理,不会直接发送 跨域请求 后端设置 Access-Control-Allow-Origin : *
- Url拼接:将
防抖
- 前端:通过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 显示为新的网址。
- 重新请求,数据不一样了,甚至于服务器不一样了
- 效率较低
- 例子:用户注销登录、登录后跳转到新的页面。
