1、权限配置在数据库中,典型的五张表。
1)t_user 用户表
2)t_role 角色表
3)t_user_role 用户-角色关联表
4)t_resource 资源表
5)t_role_resource 角色-资源关联表
2、建表语句
`t_resource`;CREATE TABLE `t_resource` (`id` int(11) NOT NULL AUTO_INCREMENT ,`name` ,`url` ,PRIMARY KEY (`id`)) `t_role`;CREATE TABLE `t_role` (`id` int(11) NOT NULL AUTO_INCREMENT ,`name` ,PRIMARY KEY (`id`)) `t_role_resource`;CREATE TABLE `t_role_resource` (`id` int(11) NOT NULL AUTO_INCREMENT ,`role_id` ,`resource_id` ,PRIMARY KEY (`id`))CREATE TABLE `t_user` (`id` int(11) NOT NULL AUTO_INCREMENT ,`account` ,`password` ,PRIMARY KEY (`id`)) `t_user_role`;CREATE TABLE `t_user_role` (`id` int(11) NOT NULL AUTO_INCREMENT ,` ,`role_id` ,PRIMARY KEY (`id`))
3、对应的领域实体
1)用户
package cn.luxh.app.domain;/** * 用户 * @author Luxh User {private Integer id; String account; String password;@Overridepublic int hashCode() {return account.hashCode();}@Overridepublic boolean equals(Object obj) {User user = (User) obj;return this.account.equals(user.getAccount());}//getter setter//… }
2)角色
package cn.luxh.app.domain;/** * 角色 * @author Luxh Role {private Integer id; String name;//getter setter//…}
3)用户-角色
package cn.luxh.app.domain;/** * 用户角色 * @author Luxh UserRole {private Integer id; Integer userId; Integer roleId;//getter setter//…}
4)资源
package cn.luxh.app.domain;/** * 资源 * @author Luxh Resource {private Integer id; String name; String url;//getter setter}
5)角色-资源
package cn.luxh.app.domain;/** * 角色资源 * @author Luxh RoleResource {private Integer id; Integer roleId; Integer resourceId;//getter setter}
4、配置文件
在web.xml文件中加上如下内容:
springSecurityFilterChainorg.springframework.web.filter.DelegatingFilterProxyspringSecurityFilterChain/*org.springframework.security.web.session.HttpSessionEventPublisher
当然配置spring监听器的时候得把springsecurity的权限配置文件给加载进去:
org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:applicationContext.xml,classpath:application-security.xml
权限配置文件内容如下:
xmlns:beans=”http://www.springframework.org/schema/beans”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=”http://www.springframework.org/schema/beans” default-target-url 指定了从登录页面登录后进行跳转的页面 always-use-default-target true表示登录成功后强制跳转authentication-failure-url 表示验证失败后进入的页面 login-processing-url 设置验证登录验证地址,如果不设置,默认是j_spring_security_checkusername-parameter,password-parameter 设置登录用户名和密码的请求name,默认:j_username,j_passworddefault-target-url=”/user/home” always-use-default-target=”true”authentication-failure-url=”/login?error=1″authentication-success-handler-ref error-if-maximum-exceeded 后登陆的账号会挤掉第一次登陆的账号session-fixation-protection防止伪造sessionid攻击. 用户登录成功后会销毁用户当前的session.创建新的session,并把用户信息复制到新session中. session-fixation-protectionerror-if-maximum-exceededclass
5、权限配置文件中的关键类
1)UserDetailsServiceImpl
不曾见谁。则见朵花儿闪下来,好一惊。