springmvc工作流程 security 和 springmvc工作流程 中的Interceptor 是什么关系,有什么异同?

博客分类:
使用Spring Security3的几种方法概述
一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中,已经实现过。
二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现。
三种我使用的是第三种 第三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,
并分别实现AccessDecisionManager、InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。
四种第四种方式我没有试过
权限代码action为请求路径,权限信息拥有多个权限代码,角色可以拥有多个权限信息,
用户属于用户组,用户组拥有多个角色,用户组必须拥有跟菜单同样权限代码action、页面菜单才能显示
最终实现菜单显示与请求路径权限验证。
在上个项目开发中用到的技术: java1.5 + struts2.1.8 + spring3.0.7 + hibernate3.2.5 + spring security3.1.0 + mysql5.5 + tomcat6.0。
我这里只说明spring security,代码是项目里抽取权限部分出来讲解的,
spring security3.1
个jar包,分别为:
spring-security-acl-3.1
.RELEASE.jar
spring-security-config-3.1
.RELEASE.jar
spring-security-core-3.1
.RELEASE.jar
spring-security-taglibs-3.1
.RELEASE.jar
spring-security-web-3.1
.RELEASE.jar
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
当然还有其他项目相关
的jar包,不贴出来了
spring security3配置相对比较简单。
Spring Security3 配置使用
spring security3 主要实现类。
spring security3 主要配置文件。
3 web.xml配置文件。
4 实现流程说明
5 权限sql脚本
6 附件为完整程序与数据库脚本
1、spring security3 主要实现类
(包含4个关键类):
(1) MySecurityFilter.java
过滤用户请求
package com.taskmanager.web.
import java.io.IOE
import java.util.C
import javax.servlet.F
import javax.servlet.FilterC
import javax.servlet.FilterC
import javax.servlet.ServletE
import javax.servlet.ServletR
import javax.servlet.ServletR
import org.springframework.security.access.ConfigA
import org.springframework.security.access.SecurityMetadataS
import org.springframework.security.access.intercept.AbstractSecurityI
import org.springframework.security.access.intercept.InterceptorStatusT
import org.springframework.security.web.FilterI
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataS
public class MySecurityFilter extends AbstractSecurityInterceptor implements
// 与applicationContext-security.xml里的myFilter的属性securityMetadataSource对应,
// 其他的两个组件,已经在AbstractSecurityInterceptor定义
private FilterInvocationSecurityMetadataSource securityMetadataS
public SecurityMetadataSource obtainSecurityMetadataSource() {
return this.securityMetadataS
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);
fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
} finally {
super.afterInvocation(token, null);
public FilterInvocationSecurityMetadataSource getSecurityMetadataSource() {
return securityMetadataS
public void setSecurityMetadataSource(
FilterInvocationSecurityMetadataSource securityMetadataSource) {
this.securityMetadataSource = securityMetadataS
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
public void destroy() {
// TODO Auto-generated method stub
public Class&? extends Object& getSecureObjectClass() {
//下面的MyAccessDecisionManager的supports方面必须放回true,否则会提醒类型错误
return FilterInvocation.
核心的InterceptorStatusToken token =
super.beforeInvocation(fi);会调用我们定义的accessDecisionManager:decide(Object
object)和securityMetadataSource
:getAttributes(Object object)方法。
MySecurityMetadataSource.java
系统启动加载系统权限
用户登入验证权限
package com.taskmanager.web.
import java.util.ArrayL
import java.util.C
import java.util.HashM
import java.util.I
import java.util.L
import java.util.M
import java.util.S
import java.util.Map.E
import org.springframework.security.access.ConfigA
import org.springframework.security.access.SecurityC
import org.springframework.security.web.FilterI
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataS
import org.springframework.security.web.util.AntPathRequestM
import org.springframework.security.web.util.RequestM
import com.taskmanager.exception.SystemRunE
import com.taskmanager.hibernate.TSysP
import com.taskmanager.hibernate.TSysP
import com.taskmanager.service.inter.PowerI
//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 = powerS
loadResourceDefine();
private PowerInter powerS
private static Map&String, Collection&ConfigAttribute&& resourceMap =
private RequestMatcher pathM
public Collection&ConfigAttribute& getAllConfigAttributes() {
return new ArrayList&ConfigAttribute&();
public boolean supports(Class&?& clazz) {
// TODO Auto-generated method stub
//加载所有资源与权限的关系
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 returnC
这里的resourcesDao,熟悉Dao设计模式和Spring 注入的朋友应该看得明白。
MyUserDetailServiceImpl.java
点击登入跳转
package com.taskmanager.web.
import java.util.C
import java.util.HashS
import java.util.S
import org.springframework.security.core.GrantedA
import org.springframework.security.core.authority.GrantedAuthorityI
import org.springframework.security.core.userdetails.U
import org.springframework.security.core.userdetails.UserD
import org.springframework.security.core.userdetails.UserDetailsS
import org.springframework.security.core.userdetails.UsernameNotFoundE
import com.taskmanager.exception.LoginE
import com.taskmanager.exception.SystemRunE
import com.taskmanager.hibernate.TSysC
import com.taskmanager.hibernate.TSysC
import com.taskmanager.hibernate.TSysP
import com.taskmanager.hibernate.TSysU
import com.taskmanager.hibernate.TSysU
import com.taskmanager.hibernate.TSysU
import com.taskmanager.service.inter.UserI
public class MyUserDetailServiceImpl implements UserDetailsService {
UserInter userS
public UserInter getUserService() {
return userS
public void setUserService(UserInter userService) {
this.userService = userS
// 登入默认会调整到这里
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
System.out.println("username is " + username);
TSysUser users=
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);
if(!users.getStatus()){
throw new UsernameNotFoundException("该用户处于锁定状态");
Collection&GrantedAuthority& grantedAuths = obtionGrantedAuthorities(users);
boolean enables =
boolean accountNonExpired =
boolean credentialsNonExpired =
boolean accountNonLocked =
User userdetail = new User(users.getCode(), users.getPassword(),
enables, accountNonExpired, credentialsNonExpired,
accountNonLocked, grantedAuths);
// 取得用户的权限
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 authS
(4) MyAccessDecisionManager.java
验证是否拥有访问的权限
package com.taskmanager.web.
import java.util.C
import java.util.I
import org.springframework.security.access.AccessDecisionM
import org.springframework.security.access.AccessDeniedE
import org.springframework.security.access.ConfigA
import org.springframework.security.authentication.InsufficientAuthenticationE
import org.springframework.security.core.A
import org.springframework.security.core.GrantedA
*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 AccessDeniedE
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) {
//所请求的资源拥有的权限(一个资源对多个权限)
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())) {
//没有权限
会跳转到login.jsp页面
throw new AccessDeniedException(" 没有权限访问");
public boolean supports(ConfigAttribute attribute) {
// TODO Auto-generated method stub
public boolean supports(Class&?& clazz) {
// TODO Auto-generated method stub
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" /&
&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&
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-name&springSecurityFilterChain&/filter-name&
&filter-class&org.springframework.web.filter.DelegatingFilterProxy&/filter-class&
&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&
1)容器启动(MySecurityMetadataSource:loadResourceDefine加载系统资源与权限列表)
2)用户发出请求
3)过滤器拦截(MySecurityFilter:doFilter)
4)取得请求资源所需权限(MySecurityMetadataSource:getAttributes)
5)匹配用户拥有权限和请求权限(MyAccessDecisionManager:decide),如果用户没有相应的权限,
执行第6步,否则执行第7步。
7)验证并授权(MyUserDetailServiceImpl:loadUserByUsername)
5、权限sql脚本
Navicat MySQL Data Transfer
Source Server
Source Server Version : 50015
Source Host
: localhost:8036
Source Database
: taskmanager
Target Server Type
Target Server Version : 50015
File Encoding
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
) ENGINE=InnoDB DEFAULT CHARSET=
-- ----------------------------
-- 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
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='角色表';
-- ----------------------------
-- Records of t_sys_character
-- ----------------------------
INSERT INTO t_sys_character VALUES ('297ef0cb915c7eb112312', '系统管理员', '系统管理员1', '1', '999', ' 14:03:25', '', null);
INSERT INTO t_sys_character VALUES ('8a8a25a0001', '分发任务', '任务分发', '1', '999', ' 15:55:12', '', null);
INSERT INTO t_sys_character VALUES ('8a8aaa060002', '任务接受', '任务接受', '1', '999', ' 15:55:39', '', null);
INSERT INTO t_sys_character VALUES ('8a8af45b0017', '任务审核', '任务审核', '1', '999', ' 15:55:57', '', null);
INSERT INTO t_sys_character VALUES ('8a8adcf0c400001', '测试', '测试', '1', '999', ' 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
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 ('8a8abd0c6000a', '8a8ab98be0009', '8a8aaa060002', '1', '999', ' 11:34:54', null);
INSERT INTO t_sys_charofgroup VALUES ('8a8abebb0000b', '8a8ab819c0008', '8a8a25a0001', '1', '999', ' 11:35:01', null);
INSERT INTO t_sys_charofgroup VALUES ('8a8ad2a001e', '', '297ef0cb915c7eb112312', '1', '999', ' 11:49:38', null);
INSERT INTO t_sys_charofgroup VALUES ('8a8aec80f0022', '8a8aea8230021', '8a8af45b0017', '1', '999', ' 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
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='部门信息表';
-- ----------------------------
-- Records of t_sys_department
-- ----------------------------
INSERT INTO t_sys_department VALUES ('297ef0cb391b4cee3d8e0001', null, '123', '否', '123', '999', '1', '123', '0', '999', ' 17:45:08', null, null, null, '123', null, null, '2', '297ef0cb391b4cee3d8e6530');
INSERT INTO t_sys_department VALUES ('297ef0cb391b4cee3d8e6530', null, 'gly', '是', '管理员部门', '8a8af73ef0023', '1', '99', '1', '999', ' 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
) ENGINE=InnoDB DEFAULT CHARSET=
-- ----------------------------
-- 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
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='菜单表';
-- ----------------------------
-- Records of t_sys_menu
-- ----------------------------
INSERT INTO t_sys_menu VALUES ('', '权限代码管理', '', '2', '1100003', '/manager/power/list.jh', '2', '1', '999', ' 17:47:53', '', '0', '');
INSERT INTO t_sys_menu VALUES ('', '系统管理', '系统管理', '1', '', '', '0', '0', '999', ' 16:38:14', '', '0', '');
INSERT INTO t_sys_menu VALUES ('', '部门用户管理', '', '2', '1100003', '/manager/user/list.jh', '6', '1', '999', ' 17:48:01', '', '0', '');
INSERT INTO t_sys_menu VALUES ('', '部门用户组管理', '', '2', '1100003', '/manager/usergroup/list.jh', '5', '1', '999', ' 17:48:10', '', '0', '');
INSERT INTO t_sys_menu VALUES ('1511122', '角色权限管理', '角色权限管理', '2', '1100003', '/manager/character/list.jh', '4', '1', '999', ' 17:48:20', '', '0', '');
INSERT INTO t_sys_menu VALUES ('1800000', '个人设置', '个人设置', '1', '', '', '15', '1', '999', ' 21:50:03', '', '0', '');
INSERT INTO t_sys_menu VALUES ('1800090', '修改密码', '修改密码', '2', '1800000', '/manager/user/pass.jh', '7', '1', '999', ' 17:48:45', '', '0', '');
INSERT INTO t_sys_menu VALUES ('5300001', '系统菜单管理', '系统菜单管理', '2', '1100003', '/manager/menu/list.jh', '3', '1', '999', ' 17:48:52', '', '0', '');
INSERT INTO t_sys_menu VALUES ('1100003', '系统管理', '系统管理', '1', '', '', '1', '1', '999', ' 16:21:38', '系统管理', '0', '');
INSERT INTO t_sys_menu VALUES ('297ef0cb01', '部门管理', '部门管理', '2', '1100003', '/manager/department/list.jh', '13', '1', '999', ' 17:49:04', '部门管理', '0', '');
INSERT INTO t_sys_menu VALUES ('bf7e0001', '审核', '任务审核', '2', '8a8afbe1f0001', '/case/auditList.jh', '18', '1', '999', ' 13:12:00', '', '0', '');
INSERT INTO t_sys_menu VALUES ('bf7ee0002', '完成', '任务完成', '2', '8a8afbe1f0001', '/case/fulfilList.jh', '19', '0', '999', ' 17:01:04', '', '0', '');
INSERT INTO t_sys_menu VALUES ('55b70001', '查询', '任务查询', '2', '8a8afbe1f0001', '/case/queryList.jh', '20', '1', '999', ' 15:09:04', '', '0', '');
INSERT INTO t_sys_menu VALUES ('55b80002', '统计', '任务统计', '2', '8a8afbe1f0001', '/case/statisticsList.jh', '21', '1', '999', ' 15:11:54', '', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8ac3e70003', '安全退出', '安全退出', '2', '1800000', '/j_spring_security_logout', '11', '1', '999', ' 16:01:27', '', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8afbe1f0001', '任务管理', '任务管理', '1', '', '', '0', '1', '999', ' 16:38:27', '任务管理', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8afc32d0002', '创建', '创建任务', '2', '8a8afbe1f0001', '/case/createCase.jh', '15', '0', '999', ' 22:45:17', '创建新任务', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8af013933bdd022000b', '接收', '接收任务', '2', '8a8afbe1f0001', '/case/receiveCase.jh', '16', '1', '999', ' 17:49:30', '', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8ac5300005', '发布', '分发任务', '2', '8a8afbe1f0001', '/case/distributionCase.jh', '17', '1', '999', ' 17:20:48', '分发任务', '0', '');
INSERT INTO t_sys_menu VALUES ('8a8aadf20001', '系统权限管理', '系统权限管理', '2', '1100003', '/manager/powerSystem/list.jh', '4', '1', '999', ' 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
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='权限代码表';
-- ----------------------------
-- Records of t_sys_power
-- ----------------------------
INSERT INTO t_sys_power VALUES ('555', '系统管理部门用户管理', '系统管理部门用户管理', '1', '1', '999', ' 21:02:38', '');
INSERT INTO t_sys_power VALUES ('8a8afc0f10003', '任务分发组', '任务分发组的全新', '1', '1', '999', ' 16:32:58', null);
INSERT INTO t_sys_power VALUES ('8a8afba0004', '公共权限', '登入者通用的权限', '1', '1', '999', ' 16:33:41', null);
INSERT INTO t_sys_power VALUES ('8a8acf5c0003', '任务接受组', '任务接受组', '1', '1', '999', ' 11:28:20', null);
INSERT INTO t_sys_power VALUES ('8a8ac350012', '任务审核', '', '1', '1', '999', ' 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
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 ('112', '555', '/manager/power/list.jh', '权限代码管理', '1', '999', ' 17:46:27', null);
INSERT INTO t_sys_powerofaction VALUES ('343', '555', '/manager/menu/list.jh', '菜单管理', '1', '999', ' 17:50:23', null);
INSERT INTO t_sys_powerofaction VALUES ('349', '555', '/manager/character/list.jh', '角色权限管理', '1', '999', ' 17:50:34', null);
INSERT INTO t_sys_powerofaction VALUES ('244', '555', '/manager/user/list.jh', '部门用户管理', '1', '999', ' 17:50:40', null);
INSERT INTO t_sys_powerofaction VALUES ('444', '555', '/manager/usergroup/list.jh', '部门用户组管理', '1', '999', ' 17:50:47', null);
INSERT INTO t_sys_powerofaction VALUES ('297ef0cb02', '555', '/manager/department/list.jh', '部门管理', '1', '999', ' 17:50:56', null);
INSERT INTO t_sys_powerofaction VALUES ('55bf990003', '8a8afba0004', '/case/queryList.jh', '任务查询', '1', '999', ' 15:09:46', null);
INSERT INTO t_sys_powerofaction VALUES ('55bce0004', '8a8afba0004', '/case/statisticsList.jh', '任务统计', '1', '999', ' 15:11:18', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8af8c0005', '8a8afba0004', '/system/default.jsp', '系统默认首页', '1', '999', ' 13:09:49', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8afb05d0006', '8a8afba0004', '/manager/user/pass.jh', '修改密码', '1', '999', ' 17:52:09', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8afadf0007', '8a8afc0f10003', '/case/createCase.jh', '创建任务', '1', '999', ' 17:51:19', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8ac1500006', '8a8afc0f10003', '/case/distributionCase.jh', '任务分发', '1', '999', ' 17:21:31', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8ab660004', '8a8acf5c0003', '/case/receiveCase.jh', '任务接受', '1', '999', ' 11:29:13', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8a05c0005', '8a8acf5c0003', '/case/fulfilList.jh', '任务完成', '1', '999', ' 11:30:03', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8a45c0013', '8a8ac350012', '/case/auditList.jh', '任务审核', '1', '999', ' 11:42:09', null);
INSERT INTO t_sys_powerofaction VALUES ('8a8a98f0002', '555', '/manager/powerSystem/list.jh', '系统权限管理', '1', '999', ' 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
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 ('8a8aedd4a000e', '8a8a25a0001', '8a8afc0f10003', '1', '999', ' 11:38:14', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8aedd4a000f', '8a8a25a0001', '8a8afba0004', '1', '999', ' 11:38:14', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8aef14f0010', '8a8aaa060002', '8a8afba0004', '1', '999', ' 11:38:19', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8aef14f0011', '8a8aaa060002', '8a8acf5c0003', '1', '999', ' 11:38:19', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8a4b30019', '297ef0cb915c7eb112312', '555', '1', '999', ' 11:49:27', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8a4b3001a', '297ef0cb915c7eb112312', '8a8afc0f10003', '1', '999', ' 11:49:27', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8a4c3001b', '297ef0cb915c7eb112312', '8a8afba0004', '1', '999', ' 11:49:27', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8a4c3001c', '297ef0cb915c7eb112312', '8a8acf5c0003', '1', '999', ' 11:49:27', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8a4d2001d', '297ef0cb915c7eb112312', '8a8ac350012', '1', '999', ' 11:49:27', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8ae28c2001f', '8a8af45b0017', '8a8afba0004', '1', '999', ' 11:54:56', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8ae28c20020', '8a8af45b0017', '8a8ac350012', '1', '999', ' 11:54:56', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8adc2090010', '297ef0cb915c7eb112312', '555', '1', '999', ' 16:14:46', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8adc2090011', '297ef0cb915c7eb112312', '8a8afc0f10003', '1', '999', ' 16:14:46', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8adc2090012', '297ef0cb915c7eb112312', '8a8afba0004', '1', '999', ' 16:14:46', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8adc2090013', '297ef0cb915c7eb112312', '8a8acf5c0003', '1', '999', ' 16:14:46', null);
INSERT INTO t_sys_powerofchar VALUES ('8a8adc2090014', '297ef0cb915c7eb112312', '8a8ac350012', '1', '999', ' 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
) ENGINE=InnoDB DEFAULT CHARSET=
-- ----------------------------
-- Records of t_sys_powersystem
-- ----------------------------
INSERT INTO t_sys_powersystem VALUES ('4081000', 'role_admin', '/manager/**/*.jh', '1', '999', ' 15:34:08', '管理员', null);
INSERT INTO t_sys_powersystem VALUES ('4551001', 'role_admin', '/system/manager/**/*.jsp', '1', '999', ' 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
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=
-- ----------------------------
-- Records of t_sys_powersystemofchar
-- ----------------------------
INSERT INTO t_sys_powersystemofchar VALUES ('8531000', '297ef0cb915c7eb112312', '4081000', '1', '999', ' 16:08:53', null);
INSERT INTO t_sys_powersystemofchar VALUES ('8531001', '297ef0cb915c7eb112312', '4551001', '1', '999', ' 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
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 ('8a8ae0624000c', '123456', '任务分发', 'e10adc3949ba59abbe56e057f20f883e', '0001', null, '1', '', '', null, '', '1', '999', ' 11:37:19', '', '297ef0cb391b4cee3d8e6530');
INSERT INTO t_sys_user VALUES ('8a8af73ef0023', '666666', '任务接受', 'f379eaf3c831b04debec345e', '0003', null, '1', '', '', null, '', '1', '999', ' 11:56:21', '', '297ef0cb391b4cee3d8e6530');
INSERT INTO t_sys_user VALUES ('999', 'admin', '超级管理员', 'a5ae4a801fc3', '0022', null, '1', '', '', null, '20', '1', '999', ' 11:17:18', '123', '297ef0cb391b4cee3d8e6530');
-- ----------------------------
-- 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
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='用户组表';
-- ----------------------------
-- Records of t_sys_usergroup
-- ----------------------------
INSERT INTO t_sys_usergroup VALUES ('', '系统管理员组', '系统管理员', null, '1', '999', ' 18:11:52', null, null, null, null);
INSERT INTO t_sys_usergroup VALUES ('8a8ab819c0008', '任务分发', '任务分发', null, '1', '999', ' 11:34:34', null, null, null, null);
INSERT INTO t_sys_usergroup VALUES ('8a8ab98be0009', '任务接受', '任务接受', null, '1', '999', ' 11:34:40', null, null, null, null);
INSERT INTO t_sys_usergroup VALUES ('8a8aea8230021', '任务审核', '任务审核', null, '1', '999', ' 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
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 ('297ef0cb19e873fd0008', '999', '', '1', '999', ' 09:48:56', null);
INSERT INTO t_sys_userofusergroup VALUES ('8a8ae0634000d', '8a8ae0624000c', '8a8ab819c0008', '1', '8a8ae0624000c', ' 11:37:19', null);
INSERT INTO t_sys_userofusergroup VALUES ('8a8af73ff0024', '8a8af73ef0023', '8a8ab98be0009', '1', '8a8af73ef0023', ' 11:56:21', null);
、附件为完整程序与数据库脚本, 导入sql脚本时请注意工具的差异化, 我用的工具是Navicat Lite
下篇期待linux相关文章
描述: 数据库脚本
下载次数: 1003
描述: spring包
下载次数: 1088
下载次数: 1141
下载次数: 1024
下载次数: 1101
下载次数: 1110
描述: 程序代码
下载次数: 1669
浏览 34331
论坛回复 /
(11 / 7873)
程序启动的时候加载系统资源与权限列表,启动完成之后,如果从数据库删除系统资源与权限的关系,如何保障加载的数据与数据库存放的数据一致性?我也想问同样的问题,现在我就是遇到这个问题了,我现在把那几个map放到userService的实现里了!单点登陆系统session过来,再加载权限
zhouxingfu520
浏览: 335065 次
来自: 广州
insert ... select...也不行
特别不支持各种join查询
你这个不支持嵌套 + 各种join union 查询
非常好的汇总
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 简述springmvc工作原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信