一、简介
(1)spring security 简介
●Spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访 问控制解决方案的安全框架。
●它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了 Spring IoC 和 AOP( 功能,
●为应用系统提供声明式的安全访问控制功能,减少了为企业系统安 全控制编写大量重复代码的工作。
●对于authentication和authorization,Spring Security 框架都有很好的支持。
○在用户认证(authentication)方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。
○在用户授权方面(authorization),Spring Security 提供了基于角色的访问控制和访问控制列表(ACL),可以对应用中的领域对象进行细粒度的控制。
●spring security 的主要功能就是 认证 和 授权
●spring security不仅可以帮助我们实现单体应用的认证和授权,还可以帮助我们实现分布式中的oAuth2.0协议的认证授权
●使用Spring Security可以帮助我们来简化认证和授权的过程
●官网:https://spring.io/projects/spring-security
●spring security的认证还是基于session的,在认证方面做的并不好,但授权做的不错;认证方面也可以选择其他框架
(2)什么是认证和授权
●认证:
○ 认证就是取得合法身份,比如京东需要用户登录,这里的登录就是认证。
●授权:
○可以给不同的角色设置不同的菜单的访问,这个功能就可以通过授权实现;当用户要使用某个功能的时候,会先进行权限判定
○根据用户的权限,来控制用户资源访问的过程
(3)什么是会话
●用户认证之后,为避免每次操作都要认证,可将用户的信息保存在会话中
●会话就是系统为了保存当前用户登入状态的机制
●常见的会话方式:
○session方式
○基于token方式(token相当于session中的cookie的作用)
○cookie+redis (redis存储用户信息,cookie负责放客户端找到redis相应的值)
(4)授权的数据模型
●主体对资源的权限
●权限的控制一般需要一套表结构的支持:
○关键表:用户表t_user、角色表t_role、菜单表t_menu、权限表t_permission
○中间表:用户角色关系表t_user_role、角色权限关系表t_role_permission、角色菜单关系表t_role_menu。
○一个用户多种角色、一个角色多个菜单、一个角色多种权限