一、 SSM权限操作
1.1 数据库与表结构
1.1.1 用户表
1.1.1.1 用户表信息描述users
1.1.1.2 sql语句
1.1.1.3 实体类
1.1.2 角色表
1.1.2.1 角色表信息描述role
1.1.2.2 sql语句
1.1.2.3 实体类
1.1.2.4 用户与角色关联关系
用户与角色之间是多对多关系,我们通过user_role表来描述其关联,在实体类中User中存在List,在Role中有List. 而角色与权限之间也存在关系,我们会在后面介绍。
1.1.3 资源权限表
1.1.3.1 权限资源表描述permission
1.1.3.2 sql语句
1.1.3.3 实体类
1.1.3.4 权限资源与角色关联关系
权限资源与角色是多对多关系,我们使用role_permission表来描述。在实体类Permission中存在List,在Role类中 有List
1.2 Spring Security概述
1.2.1 Spring Security介绍
Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架。Spring Security 为基于J2EE企业应用软件提供了全面安全服务。特别是使用领先的J2EE解决方案-Spring框架开发的企业软件项目。
人们使用Spring Security有很多种原因,不过通常吸引他们的是在J2EE Servlet规范或EJB规范中找不到典型企业应用场景的解决方案。 特别要指出的是他们不能再 WAR 或 EAR 级别进行移植。这样,如果你更换服务器环境,就要在新的目标环境进行大量的工作,对你的应用系统进行重新配置安全。使用Spring Security 解决了这些问题,也为你提供很多有用的,完全可以指定的其他安全特性。 安全包括两个主要操作。
“认证”是为用户建立一个他所声明的主体。主体一般是指用户,设备或可以在你系统中执行动作的其他系统。
“授权”指的是一个用户能否在你的应用中执行某个操作,在到达授权判断之前,身份的主体已经由身份验证过程建立了。 这些概念是通用的,不是Spring Security特有的。
在身份验证层面,Spring Security广泛支持各种身份验证模式, 这些验证模型绝大多数都由第三方提供,正在开发的有关标准机构提供的,例如 Internet Engineering Task Force。作为补充,Spring Security 也提供了自己的一套验证功能。
Spring Security 目前支持认证一体化如下认证技术: HTTP BASIC authentication headers (一个基于IEFT RFC 的 标准) HTTP Digest authentication headers (一个基于IEFT RFC 的标准) HTTP X.509 client certificate exchange (一个基于IEFT RFC 的标准) LDAP (一个非常常见的跨平台认证需要做法,特别是在大环境) Form-based authentication (提供简单用户接口的需求) OpenID authentication Computer Associates Siteminder JA-SIG Central Authentication Service (CAS,这是一个流行的开源单点登录系统) Transparent authentication context propagation for Remote Method Invocation and HttpInvoker (一个Spring远程调用协议)
1.2.2 Spring Security快速入门
1.2.2.1 pom.xml中添加Maven依赖
1.2.2.2 配置web.xml
1.2.2.3 spring security配置
1.2.2.4 测试
1.2.2.5 使用自定义页面
1.2.3 Spring Security使用数据库认证
在Spring Security中如果想要使用数据进行认证操作,有很多种操作方式,这里我们介绍使用UserDetails、 UserDetailsService来完成操作。
UserDetails是一个接口,我们可以认为UserDetails作用是封装当前进行认证的用户信息,但由于其是一个接口,所以我们可以对其进行实现,也可以使用Spring Security提供的一个UserDetails的实现类User来完成操作
以下是User类的部分代码
UserDetailsService:
1.3 用户管理
1.3.1 用户登录
1.3.1.1 spring security的配置
1.3.1.2 编写登录页面login.jsp
1.3.1.3 编写Service
1.3.1.4.IUserDao
1.3.2 用户退出
使用spring security完成用户退出,非常简单
页面中: