锁定老帖子 主题:Spring Security3配置使用
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-12-27
最后修改:2012-12-27
使用Spring Security3的几种方法概述
一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中,已经实现过。
二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现。
三种我使用的是第三种 第三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器, 四种第四种方式我没有试过 。
业务逻辑 权限代码action为请求路径,权限信息拥有多个权限代码,角色可以拥有多个权限信息, 用户属于用户组,用户组拥有多个角色,用户组必须拥有跟菜单同样权限代码action、页面菜单才能显示 , 最终实现菜单显示与请求路径权限验证。
在上个项目开发中用到的技术: java1.5 + struts2.1.8 + spring3.0.7 + hibernate3.2.5 + spring security3.1.0 + mysql5.5 + tomcat6.0。
我这里只说明spring security,代码是项目里抽取权限部分出来讲解的,
spring-security-aspects-3.1.0.RELEASE.jar spring-security-cas-3.1.0.RELEASE.jar spring-security-crypto-3.1.0.RELEASE.jar spring-security-ldap-3.1.0.RELEASE.jar spring-security-openid-3.1.0.RELEASE.jar spring-security-remoting-3.1.0.RELEASE.jar
年初讲解过spring security的旧版本Acegi的文章xml配置稍微复杂一些, spring security3配置相对比较简单。
Spring Security3 配置使用
1
spring security3 主要实现类。
2
spring security3 主要配置文件。 3 web.xml配置文件。
4 实现流程说明 5 权限sql脚本 6 附件为完整程序与数据库脚本
1、spring security3 主要实现类 (包含4个关键类):
myFilter
(1) MySecurityFilter.java 过滤用户请求 package com.taskmanager.web.security; import java.io.IOException; import java.util.Collection; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.access.SecurityMetadataSource; import org.springframework.security.access.intercept.AbstractSecurityInterceptor; import org.springframework.security.access.intercept.InterceptorStatusToken; import org.springframework.security.web.FilterInvocation; import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; public class MySecurityFilter extends AbstractSecurityInterceptor implements Filter { // 与applicationContext-security.xml里的myFilter的属性securityMetadataSource对应, // 其他的两个组件,已经在AbstractSecurityInterceptor定义 private FilterInvocationSecurityMetadataSource securityMetadataSource; @Override public SecurityMetadataSource obtainSecurityMetadataSource() { return this.securityMetadataSource; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { FilterInvocation fi = new FilterInvocation(request, response, chain); invoke(fi); } private void invoke(FilterInvocation fi) throws IOException, ServletException { // object为FilterInvocation对象 // super.beforeInvocation(fi);//源码 // 1.获取请求资源的权限 //执行 Collection<ConfigAttribute> attributes = //securityMetadataSource.getAttributes(fi); // 2.是否拥有权限 // this.accessDecisionManager.decide(authenticated, fi, attributes); // this.accessDecisionManager.decide(authenticated, fi, attributes); InterceptorStatusToken token = super.beforeInvocation(fi); try { fi.getChain().doFilter(fi.getRequest(), fi.getResponse()); } finally { super.afterInvocation(token, null); } } public FilterInvocationSecurityMetadataSource getSecurityMetadataSource() { return securityMetadataSource; } public void setSecurityMetadataSource( FilterInvocationSecurityMetadataSource securityMetadataSource) { this.securityMetadataSource = securityMetadataSource; } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } public void destroy() { // TODO Auto-generated method stub } @Override public Class<? extends Object> getSecureObjectClass() { //下面的MyAccessDecisionManager的supports方面必须放回true,否则会提醒类型错误 return FilterInvocation.class; } } 核心的InterceptorStatusToken token = super.beforeInvocation(fi);会调用我们定义的accessDecisionManager:decide(Object object)和securityMetadataSource
:getAttributes(Object object)方法。
(
2)
MySecurityMetadataSource.java
系统启动加载系统权限 用户登入验证权限 package com.taskmanager.web.security; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Map.Entry; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.access.SecurityConfig; import org.springframework.security.web.FilterInvocation; import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource; import org.springframework.security.web.util.AntPathRequestMatcher; import org.springframework.security.web.util.RequestMatcher; import com.taskmanager.exception.SystemRunException; import com.taskmanager.hibernate.TSysPowerofaction; import com.taskmanager.hibernate.TSysPowersystem; import com.taskmanager.service.inter.PowerInter; //1 加载资源与权限的对应关系 /** * 该过滤器的主要作用就是通过spring著名的IoC生成securityMetadataSource。 * securityMetadataSource相当于本包中自定义的MyInvocationSecurityMetadataSourceService。 * 该MyInvocationSecurityMetadataSourceService的作用提从数据库提取权限和资源,装配到HashMap中, * 供Spring Security使用,用于权限校验。 * @author sparta 11/3/29 */ public class MySecurityMetadataSource implements FilterInvocationSecurityMetadataSource { //由spring调用 public MySecurityMetadataSource(PowerInter powerService) throws SystemRunException { this.powerService = powerService; loadResourceDefine(); } private PowerInter powerService; private static Map<String, Collection<ConfigAttribute>> resourceMap = null; private RequestMatcher pathMatcher; public Collection<ConfigAttribute> getAllConfigAttributes() { return new ArrayList<ConfigAttribute>(); } public boolean supports(Class<?> clazz) { // TODO Auto-generated method stub return true; } //加载所有资源与权限的关系 private void loadResourceDefine() throws SystemRunException { if (resourceMap == null) { resourceMap = new HashMap<String, Collection<ConfigAttribute>>(); List<TSysPowersystem> resources = this.powerService .findByTSysPowersystem(); for (TSysPowersystem resource : resources) { Collection<ConfigAttribute> configAttributes = new ArrayList<ConfigAttribute>(); // 以权限名封装为Spring的security Object //resource.getRoleName() 角色名称 可随意 role_admin 或者 admin ConfigAttribute configAttribute = new SecurityConfig(resource.getRoleName()); configAttributes.add(configAttribute); //resource.getInterceptUrl() 格式必须是 拦截的包路径 //或者是 比如 /manager/**/*.jh 或者 /system/manager/**/*.jsp resourceMap.put(resource.getInterceptUrl(), configAttributes); } } } //返回所请求资源所需要的权限 public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException { Iterator<String> it = resourceMap.keySet().iterator(); while (it.hasNext()) { String resURL = it.next(); Iterator<String> ite = resourceMap.keySet().iterator(); pathMatcher = new AntPathRequestMatcher(resURL); if (pathMatcher.matches(((FilterInvocation) object).getRequest())) { Collection<ConfigAttribute> returnCollection = resourceMap.get(resURL); return returnCollection; } } return null; } } 这里的resourcesDao,熟悉Dao设计模式和Spring 注入的朋友应该看得明白。
(
3)
MyUserDetailServiceImpl.java
点击登入跳转
保存
用户权限
package com.taskmanager.web.security; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.GrantedAuthorityImpl; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import com.taskmanager.exception.LoginException; import com.taskmanager.exception.SystemRunException; import com.taskmanager.hibernate.TSysCharacter; import com.taskmanager.hibernate.TSysCharofgroup; import com.taskmanager.hibernate.TSysPowersystemofchar; import com.taskmanager.hibernate.TSysUser; import com.taskmanager.hibernate.TSysUsergroup; import com.taskmanager.hibernate.TSysUserofusergroup; import com.taskmanager.service.inter.UserInter; public class MyUserDetailServiceImpl implements UserDetailsService { UserInter userService; public UserInter getUserService() { return userService; } public void setUserService(UserInter userService) { this.userService = userService; } // 登入默认会调整到这里 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { System.out.println("username is " + username); TSysUser users=null; try { users = this.userService.findByUsersLogin(username); } catch (LoginException e) { throw new UsernameNotFoundException(username); } catch (SystemRunException e) { throw new UsernameNotFoundException(username); } if (users == null) { throw new UsernameNotFoundException(username); }else { if(!users.getStatus()){ throw new UsernameNotFoundException("该用户处于锁定状态"); } } Collection<GrantedAuthority> grantedAuths = obtionGrantedAuthorities(users); boolean enables = true; boolean accountNonExpired = true; boolean credentialsNonExpired = true; boolean accountNonLocked = true; User userdetail = new User(users.getCode(), users.getPassword(), enables, accountNonExpired, credentialsNonExpired, accountNonLocked, grantedAuths); return userdetail; } // 取得用户的权限 private Set<GrantedAuthority> obtionGrantedAuthorities(TSysUser user) { Set<GrantedAuthority> authSet = new HashSet<GrantedAuthority>(); //获取用户所属组 Set<TSysUserofusergroup> userGroups = user.getTSysUserofusergroups(); for(TSysUserofusergroup userGroup : userGroups ){ //获取用户所属组 组对象 TSysUsergroup usgroup=userGroup.getTSysUsergroup(); //获取用户组对应 角色集合 Set<TSysCharofgroup> charofgroups=usgroup.getTSysCharofgroups(); for (TSysCharofgroup charofgroup : charofgroups) { TSysCharacter character=charofgroup.getTSysCharacter(); //获取角色对应权限集合 Set<TSysPowersystemofchar> powerSystemofchars= character.getTSysPowersystemofchars(); for(TSysPowersystemofchar powerofchar : powerSystemofchars){ authSet.add( new GrantedAuthorityImpl(powerofchar.getTSysPowersystem().getRoleName())); } } } return authSet; } }
(4) MyAccessDecisionManager.java
验证是否拥有访问的权限
package com.taskmanager.web.security; import java.util.Collection; import java.util.Iterator; import org.springframework.security.access.AccessDecisionManager; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.ConfigAttribute; import org.springframework.security.authentication.InsufficientAuthenticationException; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; /** *AccessdecisionManager在Spring security中是很重要的。 * *在验证部分简略提过了,所有的Authentication实现需要保存在一个GrantedAuthority对象数组中。 *这就是赋予给主体的权限。 GrantedAuthority对象通过AuthenticationManager *保存到 Authentication对象里,然后从AccessDecisionManager读出来,进行授权判断。 * *Spring Security提供了一些拦截器,来控制对安全对象的访问权限,例如方法调用或web请求。 *一个是否允许执行调用的预调用决定,是由AccessDecisionManager实现的。 *这个 AccessDecisionManager 被AbstractSecurityInterceptor调用, *它用来作最终访问控制的决定。 这个AccessDecisionManager接口包含三个方法: * void decide(Authentication authentication, Object secureObject, List<ConfigAttributeDefinition> config) throws AccessDeniedException; boolean supports(ConfigAttribute attribute); boolean supports(Class clazz); 从第一个方法可以看出来,AccessDecisionManager使用方法参数传递所有信息,这好像在认证评估时进行决定。 特别是,在真实的安全方法期望调用的时候,传递安全Object启用那些参数。 比如,让我们假设安全对象是一个MethodInvocation。 很容易为任何Customer参数查询MethodInvocation, 然后在AccessDecisionManager里实现一些有序的安全逻辑,来确认主体是否允许在那个客户上操作。 如果访问被拒绝,实现将抛出一个AccessDeniedException异常。 这个 supports(ConfigAttribute) 方法在启动的时候被 AbstractSecurityInterceptor调用,来决定AccessDecisionManager 是否可以执行传递ConfigAttribute。 supports(Class)方法被安全拦截器实现调用, 包含安全拦截器将显示的AccessDecisionManager支持安全对象的类型。 */ public class MyAccessDecisionManager implements AccessDecisionManager { public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException { if(configAttributes == null) { return; } //所请求的资源拥有的权限(一个资源对多个权限) Iterator<ConfigAttribute> iterator = configAttributes.iterator(); while(iterator.hasNext()) { ConfigAttribute configAttribute = iterator.next(); //访问所请求资源所需要的权限 String needPermission = configAttribute.getAttribute(); System.out.println("needPermission is " + needPermission); //用户所拥有的权限authentication for(GrantedAuthority ga : authentication.getAuthorities()) { if(needPermission.equals(ga.getAuthority())) { return; } } } //没有权限 会跳转到login.jsp页面 throw new AccessDeniedException(" 没有权限访问"); } public boolean supports(ConfigAttribute attribute) { // TODO Auto-generated method stub return true; } public boolean supports(Class<?> clazz) { // TODO Auto-generated method stub return true; } }
2、spring security3 主要配置文件。 <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" 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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> <global-method-security pre-post-annotations="enabled"> </global-method-security> <!-- 该路径下的资源不用过滤 --> <http pattern="/include/js/**" security="none" /> <http pattern="/include/css/**" security="none" /> <http pattern="/include/scripts/**" security="none" /> <http pattern="/include/jsp/**" security="none" /> <http pattern="/images/**" security="none" /> <http pattern="/login.jsp" security="none" /> <!--auto-config = true 则使用from-login. 如果不使用该属性 则默认为http-basic(没有session).--> <!-- lowercase-comparisons:表示URL比较前先转为小写。--> <!-- path-type:表示使用Apache Ant的匹配模式。--> <!--access-denied-page:访问拒绝时转向的页面。--> <!-- access-decision-manager-ref:指定了自定义的访问策略管理器。--> <http use-expressions="true" auto-config="true" access-denied-page="/include/jsp/timeout.jsp"> <!--login-page:指定登录页面。 --> <!-- login-processing-url:指定了客户在登录页面中按下 Sign In 按钮时要访问的 URL。--> <!-- authentication-failure-url:指定了身份验证失败时跳转到的页面。--> <!-- default-target-url:指定了成功进行身份验证和授权后默认呈现给用户的页面。--> <!-- always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。 --> <form-login login-page="/login.jsp" default-target-url='/system/default.jsp' always-use-default-target="true" authentication-failure-url="/login.jsp?login_error=1" /> <!--logout-url:指定了用于响应退出系统请求的URL。其默认值为:/j_spring_security_logout。--> <!-- logout-success-url:退出系统后转向的URL。--> <!-- invalidate-session:指定在退出系统时是否要销毁Session。--> <logout invalidate-session="true" logout-success-url="/login.jsp" logout-url="/j_spring_security_logout" /> <!-- 实现免登陆验证 --> <remember-me /> <!-- max-sessions:允许用户帐号登录的次数。范例限制用户只能登录一次。--> <!-- 此值表示:用户第二次登录时,前一次的登录信息都被清空。--> <!-- exception-if-maximum-exceeded:默认为false,--> <!-- 当exception-if-maximum-exceeded="true"时系统会拒绝第二次登录。--> <session-management invalid-session-url="/login.jsp" session-fixation-protection="none"> <concurrency-control max-sessions="1" error-if-maximum-exceeded="false" /> </session-management> <custom-filter ref="myFilter" before="FILTER_SECURITY_INTERCEPTOR" /> <session-management session-authentication-strategy-ref="sas" /> </http> <beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy"> <beans:constructor-arg name="sessionRegistry" ref="sessionRegistry" /> <beans:property name="maximumSessions" value="1" /> <!-- 防止session攻击 --> <beans:property name="alwaysCreateSession" value="true" /> <beans:property name="migrateSessionAttributes" value="false" /> <!-- 同一个帐号 同时只能一个人登录 --> <beans:property name="exceptionIfMaximumExceeded" value="false" /> </beans:bean> <beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" /> <!-- 事件监听:实现了ApplicationListener监听接口,包括AuthenticationCredentialsNotFoundEvent 事件,--> <!-- AuthorizationFailureEvent事件,AuthorizedEvent事件, PublicInvocationEvent事件--> <beans:bean class="org.springframework.security.authentication.event.LoggerListener" /> <!-- 自定义资源文件 提示信息 --> <beans:bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <beans:property name="basenames" value="classpath:message_zh_CN"> </beans:property> </beans:bean> <!-- 配置过滤器 --> <beans:bean id="myFilter" class="com.taskmanager.web.security.MySecurityFilter"> <!-- 用户拥有的权限 --> <beans:property name="authenticationManager" ref="myAuthenticationManager" /> <!-- 用户是否拥有所请求资源的权限 --> <beans:property name="accessDecisionManager" ref="myAccessDecisionManager" /> <!-- 资源与权限对应关系 --> <beans:property name="securityMetadataSource" ref="mySecurityMetadataSource" /> </beans:bean> <!-- 实现了UserDetailsService的Bean --> <authentication-manager alias="myAuthenticationManager"> <authentication-provider user-service-ref="myUserDetailServiceImpl"> <!-- 登入 密码 采用MD5加密 --> <password-encoder hash="md5" ref="passwordEncoder"> </password-encoder> </authentication-provider> </authentication-manager> <!-- 验证用户请求资源 是否拥有权限 --> <beans:bean id="myAccessDecisionManager" class="com.taskmanager.web.security.MyAccessDecisionManager"> </beans:bean> <!-- 系统运行时加载 系统要拦截的资源 与用户请求时要过滤的资源 --> <beans:bean id="mySecurityMetadataSource" class="com.taskmanager.web.security.MySecurityMetadataSource"> <beans:constructor-arg name="powerService" ref="powerService"> </beans:constructor-arg> </beans:bean> <!-- 获取用户登入角色信息 --> <beans:bean id="myUserDetailServiceImpl" class="com.taskmanager.web.security.MyUserDetailServiceImpl"> <beans:property name="userService" ref="userService"></beans:property> </beans:bean> <!-- 用户的密码加密或解密 --> <beans:bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" /> </beans:beans>
3、 web.xml配置文件。 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <context-param> <description>Spring applicationContext</description> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/application*.xml </param-value> </context-param> <listener> <description>SpringContextLoaderListener</description> <display-name>SpringContextLoaderListener</display-name> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- spring scurity 拦截器 --> <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>*.jh</url-pattern> <url-pattern>*.jsp</url-pattern> <url-pattern>/j_spring_security_check</url-pattern> <url-pattern>/j_spring_security_logout</url-pattern> </filter-mapping> 4、流程
1)容器启动(MySecurityMetadataSource:loadResourceDefine加载系统资源与权限列表)
执行第6步,否则执行第7步。
5、权限sql脚本 /* Navicat MySQL Data Transfer Source Server : mysql Source Server Version : 50015 Source Host : localhost:8036 Source Database : taskmanager Target Server Type : MYSQL Target Server Version : 50015 File Encoding : 65001 Date: 2012-12-26 17:26:38 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `s_dict` -- ---------------------------- DROP TABLE IF EXISTS `s_dict`; CREATE TABLE `s_dict` ( `ID` int(50) NOT NULL auto_increment, `DictType` varchar(10) NOT NULL, `Code` varchar(20) NOT NULL, `Name` varchar(50) NOT NULL, `ParentID` varchar(20) default NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -- ---------------------------- -- Table structure for `t_sys_character` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_character`; CREATE TABLE `t_sys_character` ( `ID` varchar(50) NOT NULL COMMENT '角色ID', `NAME` varchar(30) NOT NULL COMMENT '角色名称', `DESCRIPT` varchar(200) default NULL COMMENT '角色描述', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '菜单状态', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', `SEQID` decimal(12,0) default NULL COMMENT '顺序号', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='角色表'; -- ---------------------------- -- Records of t_sys_character -- ---------------------------- INSERT INTO t_sys_character VALUES ('297ef0cb3915b16a013915c7eb112312', '系统管理员', '系统管理员1', '1', '999999999999999', '2012-09-03 14:03:25', '', null); INSERT INTO t_sys_character VALUES ('8a8a9691396b237101396b44825a0001', '分发任务', '任务分发', '1', '999999999999999', '2012-09-02 15:55:12', '', null); INSERT INTO t_sys_character VALUES ('8a8a9691396b237101396b44aa060002', '任务接受', '任务接受', '1', '999999999999999', '2012-09-02 15:55:39', '', null); INSERT INTO t_sys_character VALUES ('8a8a9691396b237101396b55f45b0017', '任务审核', '任务审核', '1', '999999999999999', '2012-09-02 15:55:57', '', null); INSERT INTO t_sys_character VALUES ('8a8a9691398b2dc201398b2f0c400001', '测试', '测试', '1', '999999999999999', '2012-09-03 16:11:19', null, null); -- ---------------------------- -- Table structure for `t_sys_charofgroup` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_charofgroup`; CREATE TABLE `t_sys_charofgroup` ( `ID` varchar(50) NOT NULL COMMENT 'ID', `GROUPID` varchar(50) NOT NULL COMMENT '用户组ID', `CHARID` varchar(50) NOT NULL COMMENT '角色ID', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', PRIMARY KEY (`ID`), KEY `t_sys_charofgroup_groupid` (`GROUPID`), KEY `t_sys_charofgroup_charid` (`CHARID`), CONSTRAINT `t_sys_charofgroup_charid` FOREIGN KEY (`CHARID`) REFERENCES `t_sys_character` (`ID`) ON DELETE CASCADE, CONSTRAINT `t_sys_charofgroup_groupid` FOREIGN KEY (`GROUPID`) REFERENCES `t_sys_usergroup` (`ID`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='用户组角色表'; -- ---------------------------- -- Records of t_sys_charofgroup -- ---------------------------- INSERT INTO t_sys_charofgroup VALUES ('8a8a9691396b237101396b4bd0c6000a', '8a8a9691396b237101396b4b98be0009', '8a8a9691396b237101396b44aa060002', '1', '999999999999999', '2012-08-28 11:34:54', null); INSERT INTO t_sys_charofgroup VALUES ('8a8a9691396b237101396b4bebb0000b', '8a8a9691396b237101396b4b819c0008', '8a8a9691396b237101396b44825a0001', '1', '999999999999999', '2012-08-28 11:35:01', null); INSERT INTO t_sys_charofgroup VALUES ('8a8a9691396b237101396b594d2a001e', '1234567890', '297ef0cb3915b16a013915c7eb112312', '1', '999999999999999', '2012-08-28 11:49:38', null); INSERT INTO t_sys_charofgroup VALUES ('8a8a9691396b237101396b5ec80f0022', '8a8a9691396b237101396b5ea8230021', '8a8a9691396b237101396b55f45b0017', '1', '999999999999999', '2012-08-28 11:55:37', null); -- ---------------------------- -- Table structure for `t_sys_department` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_department`; CREATE TABLE `t_sys_department` ( `ID` varchar(50) NOT NULL COMMENT 'ID', `ZJJGDM` varchar(9) default NULL COMMENT '部门组织机构代码', `CODE` varchar(20) NOT NULL COMMENT '部门简码', `ABBRNAME` varchar(30) NOT NULL COMMENT '是否股室', `NAME` varchar(60) NOT NULL COMMENT '部门全体', `CHIEF` varchar(50) default NULL COMMENT '部门负责人名称', `INNET` decimal(1,0) default '1' COMMENT '是否在网', `ORDERNO` decimal(6,0) default NULL COMMENT '排列顺序', `STATUS` decimal(1,0) default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `OTHERS` varchar(50) default NULL COMMENT '备注', `ISENFOREORG` decimal(1,0) default '1' COMMENT '是否行政审批部门', `WEBSITENAME` varchar(100) default NULL COMMENT '门户网站名称', `WEBSITEADDR` varchar(200) default NULL COMMENT '门户网站地址', `XZQHID` varchar(20) default NULL COMMENT '行政区划ID', `JGGXSBM` varchar(4) default NULL COMMENT '监管关系识别码', `layer` int(11) NOT NULL default '1', `PARENTID` varchar(50) default NULL COMMENT '上级部门ID', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='部门信息表'; -- ---------------------------- -- Records of t_sys_department -- ---------------------------- INSERT INTO t_sys_department VALUES ('297ef0cb391b4ce301391b4e3d8e0001', null, '123', '否', '123', '999999999999999', '1', '123', '0', '999999999999999', '2012-10-08 17:45:08', null, null, null, '123', null, null, '2', '297ef0cb391b4ce301391b4e3d8e6530'); INSERT INTO t_sys_department VALUES ('297ef0cb391b4ce301391b4e3d8e6530', null, 'gly', '是', '管理员部门', '8a8a9691396b237101396b5f73ef0023', '1', '99', '1', '999999999999999', '2012-09-24 14:04:11', null, null, null, '', null, null, '1', ''); -- ---------------------------- -- Table structure for `t_sys_duty` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_duty`; CREATE TABLE `t_sys_duty` ( `id` varchar(50) NOT NULL COMMENT '职位代码', `name` varchar(20) NOT NULL COMMENT '职位名称', `ORDERNO` int(3) default NULL COMMENT '排序号', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -- ---------------------------- -- Records of t_sys_duty -- ---------------------------- INSERT INTO t_sys_duty VALUES ('0001', '办事员', '1'); INSERT INTO t_sys_duty VALUES ('0002', '科员', '15'); INSERT INTO t_sys_duty VALUES ('0003', '站长', '16'); -- ---------------------------- -- Table structure for `t_sys_menu` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_menu`; CREATE TABLE `t_sys_menu` ( `ID` varchar(50) NOT NULL COMMENT 'ID', `NAME` varchar(30) NOT NULL COMMENT '菜单名称', `DESCRIPT` varchar(200) default NULL COMMENT '描述', `LAYER` int(1) NOT NULL default '1' COMMENT '层次,只会有1、2、3、4、5'';', `PARENTID` varchar(50) default NULL COMMENT '父菜单ID', `ACTIONNAME` varchar(100) default NULL COMMENT '响应此菜单的ACTION ,只有此菜单作为末级菜单时才填写', `ORDERNO` decimal(3,0) NOT NULL default '0' COMMENT '排列次序', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', `SYSTEM` decimal(1,0) NOT NULL default '0' COMMENT '菜单所属系统', `PARAMETER` varchar(50) default NULL COMMENT '链接此菜单的参数', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='菜单表'; -- ---------------------------- -- Records of t_sys_menu -- ---------------------------- INSERT INTO t_sys_menu VALUES ('20050909150915816077', '权限代码管理', '', '2', '2006062709371100003', '/manager/power/list.jh', '2', '1', '999999999999999', '2012-08-18 17:47:53', '', '0', ''); INSERT INTO t_sys_menu VALUES ('20050909150953452259', '系统管理', '系统管理', '1', '', '', '0', '0', '999999999999999', '2012-08-17 16:38:14', '', '0', ''); INSERT INTO t_sys_menu VALUES ('20050909679021123458', '部门用户管理', '', '2', '2006062709371100003', '/manager/user/list.jh', '6', '1', '999999999999999', '2012-08-18 17:48:01', '', '0', ''); INSERT INTO t_sys_menu VALUES ('20050916100910655954', '部门用户组管理', '', '2', '2006062709371100003', '/manager/usergroup/list.jh', '5', '1', '999999999999999', '2012-08-18 17:48:10', '', '0', ''); INSERT INTO t_sys_menu VALUES ('2006042709371511122', '角色权限管理', '角色权限管理', '2', '2006062709371100003', '/manager/character/list.jh', '4', '1', '999999999999999', '2012-08-18 17:48:20', '', '0', ''); INSERT INTO t_sys_menu VALUES ('2006051180061800000', '个人设置', '个人设置', '1', '', '', '15', '1', '999999999999999', '2012-08-14 21:50:03', '', '0', ''); INSERT INTO t_sys_menu VALUES ('2006051180061800090', '修改密码', '修改密码', '2', '2006051180061800000', '/manager/user/pass.jh', '7', '1', '999999999999999', '2012-08-18 17:48:45', '', '0', ''); INSERT INTO t_sys_menu VALUES ('2006061909095300001', '系统菜单管理', '系统菜单管理', '2', '2006062709371100003', '/manager/menu/list.jh', '3', '1', '999999999999999', '2012-08-18 17:48:52', '', '0', ''); INSERT INTO t_sys_menu VALUES ('2006062709371100003', '系统管理', '系统管理', '1', '', '', '1', '1', '999999999999999', '2012-08-17 16:21:38', '系统管理', '0', ''); INSERT INTO t_sys_menu VALUES ('297ef0cb3913a1ff013913ac623d0001', '部门管理', '部门管理', '2', '2006062709371100003', '/manager/department/list.jh', '13', '1', '999999999999999', '2012-08-18 17:49:04', '部门管理', '0', ''); INSERT INTO t_sys_menu VALUES ('402880013956bf7e01395707b2050001', '审核', '任务审核', '2', '8a8a96913933a87f013933b0be1f0001', '/case/auditList.jh', '18', '1', '999999999999999', '2012-08-24 13:12:00', '', '0', ''); INSERT INTO t_sys_menu VALUES ('402880013956bf7e01395707ef1e0002', '完成', '任务完成', '2', '8a8a96913933a87f013933b0be1f0001', '/case/fulfilList.jh', '19', '0', '999999999999999', '2012-09-24 17:01:04', '', '0', ''); INSERT INTO t_sys_menu VALUES ('40288001397655b80139765885070001', '查询', '任务查询', '2', '8a8a96913933a87f013933b0be1f0001', '/case/queryList.jh', '20', '1', '999999999999999', '2012-08-30 15:09:04', '', '0', ''); INSERT INTO t_sys_menu VALUES ('40288001397655b80139765921080002', '统计', '任务统计', '2', '8a8a96913933a87f013933b0be1f0001', '/case/statisticsList.jh', '21', '1', '999999999999999', '2012-08-30 15:11:54', '', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a9691390a5c7001390a6703e70003', '安全退出', '安全退出', '2', '2006051180061800000', '/j_spring_security_logout', '11', '1', '999999999999999', '2012-08-09 16:01:27', '', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a96913933a87f013933b0be1f0001', '任务管理', '任务管理', '1', '', '', '0', '1', '999999999999999', '2012-08-17 16:38:27', '任务管理', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a96913933a87f013933b4c32d0002', '创建', '创建任务', '2', '8a8a96913933a87f013933b0be1f0001', '/case/createCase.jh', '15', '0', '999999999999999', '2012-09-21 22:45:17', '创建新任务', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a96913933a87f013933bdd022000b', '接收', '接收任务', '2', '8a8a96913933a87f013933b0be1f0001', '/case/receiveCase.jh', '16', '1', '999999999999999', '2012-08-18 17:49:30', '', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a9691394d77c001394da115300005', '发布', '分发任务', '2', '8a8a96913933a87f013933b0be1f0001', '/case/distributionCase.jh', '17', '1', '999999999999999', '2012-08-22 17:20:48', '分发任务', '0', ''); INSERT INTO t_sys_menu VALUES ('8a8a9691398ad08401398ad2adf20001', '系统权限管理', '系统权限管理', '2', '2006062709371100003', '/manager/powerSystem/list.jh', '4', '1', '999999999999999', '2012-09-03 14:30:26', '', '0', ''); -- ---------------------------- -- Table structure for `t_sys_power` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_power`; CREATE TABLE `t_sys_power` ( `ID` varchar(50) NOT NULL COMMENT '权限ID', `NAME` varchar(30) NOT NULL COMMENT '权限名称', `DESCRIPT` varchar(200) default NULL COMMENT '描述', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `ISPUBLIC` decimal(1,0) default '0' COMMENT '是否公共权限', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='权限代码表'; -- ---------------------------- -- Records of t_sys_power -- ---------------------------- INSERT INTO t_sys_power VALUES ('200512012106555', '系统管理部门用户管理', '系统管理部门用户管理', '1', '1', '999999999999999', '2012-08-14 21:02:38', ''); INSERT INTO t_sys_power VALUES ('8a8a96913933a87f013933b6c0f10003', '任务分发组', '任务分发组的全新', '1', '1', '999999999999999', '2012-08-17 16:32:58', null); INSERT INTO t_sys_power VALUES ('8a8a96913933a87f013933b768ba0004', '公共权限', '登入者通用的权限', '1', '1', '999999999999999', '2012-08-17 16:33:41', null); INSERT INTO t_sys_power VALUES ('8a8a9691396b237101396b45cf5c0003', '任务接受组', '任务接受组', '1', '1', '999999999999999', '2012-08-28 11:28:20', null); INSERT INTO t_sys_power VALUES ('8a8a9691396b237101396b523c350012', '任务审核', '', '1', '1', '999999999999999', '2012-08-28 11:41:55', null); -- ---------------------------- -- Table structure for `t_sys_powerofaction` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_powerofaction`; CREATE TABLE `t_sys_powerofaction` ( `ID` varchar(50) NOT NULL COMMENT 'ID', `POWERID` varchar(50) NOT NULL COMMENT '权限ID', `ACTIONNAME` varchar(100) NOT NULL COMMENT '权限对应的ACTION名称', `DESCRIPT` varchar(200) default NULL COMMENT '描述', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', PRIMARY KEY (`ID`), KEY `t_sys_powerofaction_id` (`POWERID`), KEY `t_sys_powerofaction_prid` (`POWERID`), CONSTRAINT `t_sys_powerofaction_prid` FOREIGN KEY (`POWERID`) REFERENCES `t_sys_power` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='权限对应ACTION表'; -- ---------------------------- -- Records of t_sys_powerofaction -- ---------------------------- INSERT INTO t_sys_powerofaction VALUES ('200512012102112', '200512012106555', '/manager/power/list.jh', '权限代码管理', '1', '999999999999999', '2012-08-18 17:46:27', null); INSERT INTO t_sys_powerofaction VALUES ('200512012197343', '200512012106555', '/manager/menu/list.jh', '菜单管理', '1', '999999999999999', '2012-08-18 17:50:23', null); INSERT INTO t_sys_powerofaction VALUES ('200512012197349', '200512012106555', '/manager/character/list.jh', '角色权限管理', '1', '999999999999999', '2012-08-18 17:50:34', null); INSERT INTO t_sys_powerofaction VALUES ('200512012412244', '200512012106555', '/manager/user/list.jh', '部门用户管理', '1', '999999999999999', '2012-08-18 17:50:40', null); INSERT INTO t_sys_powerofaction VALUES ('200512012435444', '200512012106555', '/manager/usergroup/list.jh', '部门用户组管理', '1', '999999999999999', '2012-08-18 17:50:47', null); INSERT INTO t_sys_powerofaction VALUES ('297ef0cb3913a1ff013913ad56520002', '200512012106555', '/manager/department/list.jh', '部门管理', '1', '999999999999999', '2012-08-18 17:50:56', null); INSERT INTO t_sys_powerofaction VALUES ('40288001397655b80139765d3f990003', '8a8a96913933a87f013933b768ba0004', '/case/queryList.jh', '任务查询', '1', '999999999999999', '2012-08-30 15:09:46', null); INSERT INTO t_sys_powerofaction VALUES ('40288001397655b80139765ea8ce0004', '8a8a96913933a87f013933b768ba0004', '/case/statisticsList.jh', '任务统计', '1', '999999999999999', '2012-08-30 15:11:18', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a96913933a87f013933b8268c0005', '8a8a96913933a87f013933b768ba0004', '/system/default.jsp', '系统默认首页', '1', '999999999999999', '2012-08-20 13:09:49', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a96913933a87f013933b8b05d0006', '8a8a96913933a87f013933b768ba0004', '/manager/user/pass.jh', '修改密码', '1', '999999999999999', '2012-08-18 17:52:09', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a96913933a87f013933b91adf0007', '8a8a96913933a87f013933b6c0f10003', '/case/createCase.jh', '创建任务', '1', '999999999999999', '2012-08-18 17:51:19', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a9691394d77c001394da301500006', '8a8a96913933a87f013933b6c0f10003', '/case/distributionCase.jh', '任务分发', '1', '999999999999999', '2012-08-22 17:21:31', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a9691396b237101396b469b660004', '8a8a9691396b237101396b45cf5c0003', '/case/receiveCase.jh', '任务接受', '1', '999999999999999', '2012-08-28 11:29:13', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a9691396b237101396b47605c0005', '8a8a9691396b237101396b45cf5c0003', '/case/fulfilList.jh', '任务完成', '1', '999999999999999', '2012-08-28 11:30:03', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a9691396b237101396b52745c0013', '8a8a9691396b237101396b523c350012', '/case/auditList.jh', '任务审核', '1', '999999999999999', '2012-08-28 11:42:09', null); INSERT INTO t_sys_powerofaction VALUES ('8a8a9691398ad08401398ad3798f0002', '200512012106555', '/manager/powerSystem/list.jh', '系统权限管理', '1', '999999999999999', '2012-09-03 14:31:18', null); -- ---------------------------- -- Table structure for `t_sys_powerofchar` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_powerofchar`; CREATE TABLE `t_sys_powerofchar` ( `ID` varchar(50) NOT NULL COMMENT 'ID', `CHARID` varchar(50) NOT NULL COMMENT '角色ID', `POWERID` varchar(50) NOT NULL COMMENT '权限ID', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', PRIMARY KEY (`ID`), KEY `t_sys_powerofchar_powerid` (`POWERID`), KEY `t_sys_powerofchar_cid` (`CHARID`), KEY `t_sys_powerofchar_chid` (`CHARID`), KEY `t_sys_powerof_prid` (`POWERID`), CONSTRAINT `t_sys_powerofchar_chid` FOREIGN KEY (`CHARID`) REFERENCES `t_sys_character` (`ID`) ON DELETE CASCADE, CONSTRAINT `t_sys_powerof_prid` FOREIGN KEY (`POWERID`) REFERENCES `t_sys_power` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='角色权限表'; -- ---------------------------- -- Records of t_sys_powerofchar -- ---------------------------- INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b4edd4a000e', '8a8a9691396b237101396b44825a0001', '8a8a96913933a87f013933b6c0f10003', '1', '999999999999999', '2012-08-28 11:38:14', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b4edd4a000f', '8a8a9691396b237101396b44825a0001', '8a8a96913933a87f013933b768ba0004', '1', '999999999999999', '2012-08-28 11:38:14', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b4ef14f0010', '8a8a9691396b237101396b44aa060002', '8a8a96913933a87f013933b768ba0004', '1', '999999999999999', '2012-08-28 11:38:19', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b4ef14f0011', '8a8a9691396b237101396b44aa060002', '8a8a9691396b237101396b45cf5c0003', '1', '999999999999999', '2012-08-28 11:38:19', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5924b30019', '297ef0cb3915b16a013915c7eb112312', '200512012106555', '1', '999999999999999', '2012-08-28 11:49:27', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5924b3001a', '297ef0cb3915b16a013915c7eb112312', '8a8a96913933a87f013933b6c0f10003', '1', '999999999999999', '2012-08-28 11:49:27', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5924c3001b', '297ef0cb3915b16a013915c7eb112312', '8a8a96913933a87f013933b768ba0004', '1', '999999999999999', '2012-08-28 11:49:27', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5924c3001c', '297ef0cb3915b16a013915c7eb112312', '8a8a9691396b237101396b45cf5c0003', '1', '999999999999999', '2012-08-28 11:49:27', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5924d2001d', '297ef0cb3915b16a013915c7eb112312', '8a8a9691396b237101396b523c350012', '1', '999999999999999', '2012-08-28 11:49:27', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5e28c2001f', '8a8a9691396b237101396b55f45b0017', '8a8a96913933a87f013933b768ba0004', '1', '999999999999999', '2012-08-28 11:54:56', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691396b237101396b5e28c20020', '8a8a9691396b237101396b55f45b0017', '8a8a9691396b237101396b523c350012', '1', '999999999999999', '2012-08-28 11:54:56', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691398b2dc201398b3232090010', '297ef0cb3915b16a013915c7eb112312', '200512012106555', '1', '999999999999999', '2012-09-03 16:14:46', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691398b2dc201398b3232090011', '297ef0cb3915b16a013915c7eb112312', '8a8a96913933a87f013933b6c0f10003', '1', '999999999999999', '2012-09-03 16:14:46', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691398b2dc201398b3232090012', '297ef0cb3915b16a013915c7eb112312', '8a8a96913933a87f013933b768ba0004', '1', '999999999999999', '2012-09-03 16:14:46', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691398b2dc201398b3232090013', '297ef0cb3915b16a013915c7eb112312', '8a8a9691396b237101396b45cf5c0003', '1', '999999999999999', '2012-09-03 16:14:46', null); INSERT INTO t_sys_powerofchar VALUES ('8a8a9691398b2dc201398b3232090014', '297ef0cb3915b16a013915c7eb112312', '8a8a9691396b237101396b523c350012', '1', '999999999999999', '2012-09-03 16:14:46', null); -- ---------------------------- -- Table structure for `t_sys_powersystem` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_powersystem`; CREATE TABLE `t_sys_powersystem` ( `ID` varchar(20) NOT NULL, `role_name` varchar(20) NOT NULL, `intercept_url` varchar(50) NOT NULL, `STATUS` decimal(11,0) NOT NULL default '1', `MODPERSON` varchar(20) default NULL, `MODTIME` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `REMARK` varchar(100) default NULL, `DESCRIPT` varchar(50) default NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -- ---------------------------- -- Records of t_sys_powersystem -- ---------------------------- INSERT INTO t_sys_powersystem VALUES ('9201209031534081000', 'role_admin', '/manager/**/*.jh', '1', '999999999999999', '2012-09-03 15:34:08', '管理员', null); INSERT INTO t_sys_powersystem VALUES ('9201209031534551001', 'role_admin', '/system/manager/**/*.jsp', '1', '999999999999999', '2012-09-03 15:34:55', '管理员', null); -- ---------------------------- -- Table structure for `t_sys_powersystemofchar` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_powersystemofchar`; CREATE TABLE `t_sys_powersystemofchar` ( `ID` varchar(20) NOT NULL, `CHARID` varchar(50) default NULL, `POWERsystemID` varchar(50) default NULL, `STATUS` decimal(11,0) NOT NULL default '1', `MODPERSON` varchar(20) default NULL, `MODTIME` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `REMARK` varchar(100) default NULL, PRIMARY KEY (`ID`), KEY `t_sys_powersystemofchar_CHARID` (`CHARID`), KEY `t_sys_powersystemofchar_POWERsystemID` (`POWERsystemID`), CONSTRAINT `t_sys_powersystemofchar_CHARID` FOREIGN KEY (`CHARID`) REFERENCES `t_sys_character` (`ID`), CONSTRAINT `t_sys_powersystemofchar_POWERsystemID` FOREIGN KEY (`POWERsystemID`) REFERENCES `t_sys_powersystem` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -- ---------------------------- -- Records of t_sys_powersystemofchar -- ---------------------------- INSERT INTO t_sys_powersystemofchar VALUES ('9201209031608531000', '297ef0cb3915b16a013915c7eb112312', '9201209031534081000', '1', '999999999999999', '2012-09-03 16:08:53', null); INSERT INTO t_sys_powersystemofchar VALUES ('9201209031608531001', '297ef0cb3915b16a013915c7eb112312', '9201209031534551001', '1', '999999999999999', '2012-09-03 16:08:53', null); -- ---------------------------- -- Table structure for `t_sys_user` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_user`; CREATE TABLE `t_sys_user` ( `ID` varchar(50) NOT NULL COMMENT '用户ID', `CODE` varchar(20) NOT NULL COMMENT '用户登入代码', `NAME` varchar(40) NOT NULL COMMENT '用户中文姓名', `PASSWORD` varchar(60) NOT NULL COMMENT '用户登入密码', `DUTYID` varchar(6) NOT NULL COMMENT '职务', `LOGINTYPE` decimal(1,0) default '0' COMMENT '登入类别', `SEX` decimal(1,0) default '1' COMMENT '性别', `MOBILE` varchar(50) default NULL COMMENT '手机', `EMAIL` varchar(120) default NULL COMMENT '邮件', `CAID` varchar(128) default NULL COMMENT '对应CA的唯一ID', `ORDERNO` varchar(6) default NULL COMMENT '排列顺序', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', `departmentID` varchar(59) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `CODE_UNIQUE` (`CODE`), KEY `t_sys_userdepartmentID` (`departmentID`), KEY `t_sys_userdutyID` (`DUTYID`), CONSTRAINT `t_sys_userdepartmentID` FOREIGN KEY (`departmentID`) REFERENCES `t_sys_department` (`ID`) ON DELETE NO ACTION, CONSTRAINT `t_sys_userdutyID` FOREIGN KEY (`DUTYID`) REFERENCES `t_sys_duty` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='用户表'; -- ---------------------------- -- Records of t_sys_user -- ---------------------------- INSERT INTO t_sys_user VALUES ('8a8a9691396b237101396b4e0624000c', '123456', '任务分发', 'e10adc3949ba59abbe56e057f20f883e', '0001', null, '1', '', '', null, '', '1', '999999999999999', '2012-08-28 11:37:19', '', '297ef0cb391b4ce301391b4e3d8e6530'); INSERT INTO t_sys_user VALUES ('8a8a9691396b237101396b5f73ef0023', '666666', '任务接受', 'f379eaf3c831b04de153469d1bec345e', '0003', null, '1', '', '', null, '', '1', '999999999999999', '2012-08-28 11:56:21', '', '297ef0cb391b4ce301391b4e3d8e6530'); INSERT INTO t_sys_user VALUES ('999999999999999', 'admin', '超级管理员', '21232f297a57a5a743894a0e4a801fc3', '0022', null, '1', '', 'zhou@136.com', null, '20', '1', '999999999999999', '2012-09-14 11:17:18', '123', '297ef0cb391b4ce301391b4e3d8e6530'); -- ---------------------------- -- Table structure for `t_sys_usergroup` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_usergroup`; CREATE TABLE `t_sys_usergroup` ( `ID` varchar(50) NOT NULL COMMENT '用户组ID', `NAME` varchar(30) NOT NULL COMMENT '用户组名称', `DESCRIPT` varchar(200) default NULL COMMENT '描述', `DEPARTID` varchar(20) default NULL COMMENT '部门ID', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', `PARENT` varchar(20) default NULL, `XZQHID` varchar(20) default NULL COMMENT '关联的行政区域ID', `LAYER` decimal(2,0) default NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='用户组表'; -- ---------------------------- -- Records of t_sys_usergroup -- ---------------------------- INSERT INTO t_sys_usergroup VALUES ('1234567890', '系统管理员组', '系统管理员', null, '1', '999999999999999', '2012-08-18 18:11:52', null, null, null, null); INSERT INTO t_sys_usergroup VALUES ('8a8a9691396b237101396b4b819c0008', '任务分发', '任务分发', null, '1', '999999999999999', '2012-08-28 11:34:34', null, null, null, null); INSERT INTO t_sys_usergroup VALUES ('8a8a9691396b237101396b4b98be0009', '任务接受', '任务接受', null, '1', '999999999999999', '2012-08-28 11:34:40', null, null, null, null); INSERT INTO t_sys_usergroup VALUES ('8a8a9691396b237101396b5ea8230021', '任务审核', '任务审核', null, '1', '999999999999999', '2012-08-28 11:55:29', null, null, null, null); -- ---------------------------- -- Table structure for `t_sys_userofusergroup` -- ---------------------------- DROP TABLE IF EXISTS `t_sys_userofusergroup`; CREATE TABLE `t_sys_userofusergroup` ( `ID` varchar(50) NOT NULL, `USERID` varchar(50) NOT NULL COMMENT '用户ID', `USERGROUPID` varchar(50) NOT NULL COMMENT '用户组ID', `STATUS` decimal(1,0) NOT NULL default '1' COMMENT '是否有效', `MODPERSON` varchar(50) default NULL COMMENT '最后修改人', `MODTIME` timestamp NULL default NULL COMMENT '最后修改时间', `REMARK` varchar(100) default NULL COMMENT '备注', PRIMARY KEY (`ID`), KEY `t_sys_userofusergroup_userid` (`USERID`), KEY `t_sys_userofusergroup_usergroupid` (`USERGROUPID`), CONSTRAINT `t_sys_userofusergroup_usergroupid` FOREIGN KEY (`USERGROUPID`) REFERENCES `t_sys_usergroup` (`ID`) ON DELETE CASCADE, CONSTRAINT `t_sys_userofusergroup_userid` FOREIGN KEY (`USERID`) REFERENCES `t_sys_user` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='用户组对应用户关系表'; -- ---------------------------- -- Records of t_sys_userofusergroup -- ---------------------------- INSERT INTO t_sys_userofusergroup VALUES ('297ef0cb3919d144013919e873fd0008', '999999999999999', '1234567890', '1', '999999999999999', '2012-08-13 09:48:56', null); INSERT INTO t_sys_userofusergroup VALUES ('8a8a9691396b237101396b4e0634000d', '8a8a9691396b237101396b4e0624000c', '8a8a9691396b237101396b4b819c0008', '1', '8a8a9691396b237101396b4e0624000c', '2012-08-28 11:37:19', null); INSERT INTO t_sys_userofusergroup VALUES ('8a8a9691396b237101396b5f73ff0024', '8a8a9691396b237101396b5f73ef0023', '8a8a9691396b237101396b4b98be0009', '1', '8a8a9691396b237101396b5f73ef0023', '2012-08-28 11:56:21', null);
6
、附件为完整程序与数据库脚本, 导入sql脚本时请注意工具的差异化, 我用的工具是Navicat Lite 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-12-28
刚好需要这个。学习学习
|
|
返回顶楼 | |
发表时间:2013-01-02
Acegi越做越笨重
不如shiro好用 |
|
返回顶楼 | |
发表时间:2013-01-02
有搞越复杂。。。不利于维护!
|
|
返回顶楼 | |
发表时间:2013-01-03
谢谢分享,正在学习这方面的技术。
|
|
返回顶楼 | |
发表时间:2013-01-03
pangpang514 写道 有搞越复杂。。。不利于维护!
不复杂吧,配置文件只有一个代码基本都是通用的,没有什么逻辑代码,其他都是根据项目的权限设计相应的数据库。 |
|
返回顶楼 | |
发表时间:2013-01-03
tangyang332 写道 Acegi越做越笨重
不如shiro好用 Acegi2 配置是挺多的, 到了security3还是减少了很多配置的,初次使用shiro配置更简单。 |
|
返回顶楼 | |
发表时间:2013-01-03
tangyang332 写道 Acegi越做越笨重
不如shiro好用 那是你没用熟练,其中大多数基础配置是配好不用动的!! |
|
返回顶楼 | |
发表时间:2013-01-05
能否能提供我帮助
把框架搭起来 |
|
返回顶楼 | |
发表时间:2013-01-05
徜徉の小溪 写道 能否能提供我帮助
把框架搭起来 你下载附件 源代码可以运行的 框架都在里面 |
|
返回顶楼 | |