1. 为什么需要权限管理

  • 安全性:误操作、人为破坏、数据泄露等
  • 数据隔离:不同权限能看到及操作不同的数据
  • 明确职责:运营、客服等不同角色

2. 理想中的权限管理

  • 能实现的角色级权限 RBAC
  • 能实现功能级、数据级权限
  • 简单、易操作、能够应对各种需求

 

3. 相关操作界面

  • 权限管理界面、角色管理界面、用户管理界面
  • 角色和权限关系维护界面、用户和角色关系维护界面

 

4. SpringSecurity

4.1 常用认证模式 

  • basic 是http1.0开始的、针对特定的资源需要提供用户名和密码才可以访问。用户名:密码 以base64编码,浏览器会在报文头部加入base64编码的内容,服务器解析出这些信息并且认证通过才可以访问。缺点:无状态,导致每次通信都需要要带上认证信息。传输不安全,认证信息用的是base64位编码,基本上属于明文传输,很容易对报文截取盗用认证信息
  • Digest 用来替代原来的basic模式、与basic不同的是、浏览器会对用户名、密码、http方法、对请求资源的uri等组合后进行md5加密再把计算得到的结果发送给服务器,服务器获取到信息后同样会对用户名密码http方法等组合运算后再次以结果比较,如果相同就是认证通过。避免了明文传输
  • X.509 证书认证 
  • LDAP 是轻量级的目录访问协议 
  • Form 基于表单的验证

 

4.2 常用权限拦截器讲解

  • SecurityContextPersistenceFilter 位于过滤器的顶端、是第一个起作用的过滤器。第一个用途是保证用户的session已经存在了SpringSecurity上下文中,第二个用户是在所有过滤器执行完后清空 SecurityContextHolder的内容
  • LogoutFilter 处理注销请求
  • AbstractAuthenticationProcessingFilter 处理form登录的过滤器
  • DefaultLoginPageGeneratingFilter 用来生成一个默认的登录页面
  • BasicAuthenticationFilter 进行basic验证的
  • SecurityContextHolderAwareREquestFilter 用来包装用户的请求
  • RememberMeAuthenticationFilter 记住我功能 依赖Cookie实现
  • AnonymousAuthencationFilter 当用户未登录时默认分配匿名权限
  • ExceptionTranslationFilter 处理filterSecurityInterceptor中抛出的异常
  • SessionManagementFilter 防止会话攻击
  • FilterSecurityInterceptor  包含用户的权限控制
  • FilterChainProxy 安装顺序来调用一组filter 

 

 

5. ApacheShiro

5.1 HelloWorld

工程代码

链接: https://pan.baidu.com/s/1zvm3QsE7WYSZnyfI7Ruu7w 提取码: xqyp