初始化项目
This commit is contained in:
67
sso/src/main/resources/java.properties
Normal file
67
sso/src/main/resources/java.properties
Normal file
@@ -0,0 +1,67 @@
|
||||
################################通用且因环境变化而变化
|
||||
#波形文路径(本地配置)
|
||||
WAVE_PATH=C:/Comtrade
|
||||
#服务器临时文件路径(用于存储离线、报告存储)
|
||||
TMP_PATH=C:/
|
||||
#webSocket
|
||||
WEBSOCKET=ws://127.0.0.1:8080/sso/websocket/
|
||||
#socket端口配置
|
||||
SOCKETPORT=60000
|
||||
#Kafka
|
||||
ZOOKEEPER=192.168.1.200:2181
|
||||
GROUPID=test-consumer-group
|
||||
TOPIC=eventdata
|
||||
KAFKA_LOG=true
|
||||
#报表生成路径
|
||||
REPORT_PATH=http://www.pqmcc.com:8040/shiningCloud/appfiles/
|
||||
#服务器白名单
|
||||
SYSTEM_HOST=192.168.1.211
|
||||
#是否输出业务日志
|
||||
BUSINESS_LOG_FLAG=false
|
||||
#监测点数量级
|
||||
PID_Number=10000
|
||||
#9300谐波越限天数
|
||||
overRunDay=10
|
||||
#报表查询条件设定(单位:天)
|
||||
REPORT_DAY=1
|
||||
#是否发送邮件
|
||||
MAIL_FLAG=false
|
||||
#邮件服务器连接地址
|
||||
MAIL_HOST=smtp.qq.com
|
||||
#发送方邮箱
|
||||
MAIL_ADDRESS=83944980@qq.com
|
||||
#SMTP授权码
|
||||
SMTP_NUM=uwhilozcumpucafd
|
||||
#海南短信验证
|
||||
MSG_USER=1C6CC426DFE8D7C2BC42C7C19F101D80
|
||||
MSG_PASSWORD=8836E651F09195FA3EE892A1B700DC65
|
||||
#加密方式 0、base64 1 、3des
|
||||
CDKEY_ENCY=1
|
||||
|
||||
|
||||
################################独立配置且不随环境变化
|
||||
#当前系统标志
|
||||
SYSTEM_FLAG=SSO
|
||||
#当前系统的GUID
|
||||
SYS_TYPE=3bba2471-7384-41de-800b-aed41c845b7b
|
||||
SYS_TYPE_ZT=1cfcd6e2-c5fe-4b15-988a-32b90f1170c1
|
||||
SYS_TYPE_WT=983f9dfe-4f9a-4c96-89d8-7d425a1f1d6c
|
||||
#sso认证中心url
|
||||
SSO_URL=http://127.0.0.1:7878/sso/user/
|
||||
#如果相同容器的话,直接根据request获取url配置路径,否则自定义配置url
|
||||
ONE_CONTAINER=true
|
||||
SSO_JUDGE=http://127.0.0.1:7878/sso/user/judgeLogin?item=pqs9000
|
||||
#sso认证中心,完毕后前往子系统进行二次认证
|
||||
#如果相同容器的话,直接根据request获取url配置路径,否则自定义配置url
|
||||
pqs9200.regist.url=http://127.0.0.1:8080/pqs9200/user/ssoRegister?token=
|
||||
pqs9000.regist.url=http://127.0.0.1:8088/pqs9000/user/ssoRegister?token=
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
63
sso/src/main/resources/jdbc.properties
Normal file
63
sso/src/main/resources/jdbc.properties
Normal file
@@ -0,0 +1,63 @@
|
||||
#oracle.jdbcUrl=jdbc:log4jdbc:oracle:thin:@192.168.5.166:1521:cjldata
|
||||
oracle.driverClass=oracle.jdbc.driver.OracleDriver
|
||||
#pqsadmin
|
||||
#oracle.jdbcUrl=jdbc\:oracle\:thin\:@192.168.1.101\:1521\:pqsbase
|
||||
#oracle.user=8836E651F09195FA3EE892A1B700DC65
|
||||
#oracle.password=110ADDC7B3686BE36E80EB3BC5BD63E8
|
||||
#hainan
|
||||
#oracle.jdbcUrl=jdbc\:oracle\:thin\:@192.168.1.51\:1521\:pqsbase
|
||||
#oracle.user=8836E651F09195FA6312AD217B40D520
|
||||
#oracle.password=8836E651F09195FA3EE892A1B700DC65
|
||||
#jibei
|
||||
#oracle.jdbcUrl=jdbc\:oracle\:thin\:@192.168.1.51\:1521\:pqsbase
|
||||
#oracle.user=8836E651F09195FA36F59F764BEC048E
|
||||
#oracle.password=8836E651F09195FA3EE892A1B700DC65
|
||||
#本地 jibei
|
||||
oracle.jdbcUrl=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:ORCL
|
||||
oracle.user=8836E651F09195FA36F59F764BEC048E
|
||||
oracle.password=8836E651F09195FA3EE892A1B700DC65
|
||||
|
||||
# 池初始化大小
|
||||
oracle.initialSize=1
|
||||
# 池最小连接数
|
||||
oracle.minIdle=1
|
||||
# 池最大连接数
|
||||
oracle.maxActive=50
|
||||
# 获取连接等待超时的时间
|
||||
oracle.maxWait=60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
oracle.timeBetweenEvictionRunsMillis=60000
|
||||
# 一个连接在池中最小生存的时间,单位是毫秒
|
||||
oracle.minEvictableIdleTimeMillis=300000
|
||||
# 是否打开PSCache
|
||||
oracle.poolPreparedStatements=false
|
||||
# 指定每个连接上PSCache的大小
|
||||
oracle.maxPoolPreparedStatementPerConnectionSize=20
|
||||
#mariadb
|
||||
mariadb.driverClass=org.mariadb.jdbc.Driver
|
||||
#db.jdbcUrl=jdbc\:oracle\:thin\:@192.168.1.254\:1521\:orcl
|
||||
mariadb.jdbcUrl=jdbc:mariadb://192.168.1.108:3306/pq?useUnicode=true&characterEncoding=utf-8&useSSL=false
|
||||
#db.user=eventdata
|
||||
mariadb.user=42BAAEC9A8582476
|
||||
#db.user=AE17109A75AE812EF5A59A916627E318
|
||||
mariadb.password=ED94C2C049B041FD
|
||||
#user=eventdata1
|
||||
#password=eventdata
|
||||
# 池初始化大小
|
||||
mariadb.initialSize=1
|
||||
# 池最小连接数
|
||||
mariadb.minIdle=1
|
||||
# 池最大连接数
|
||||
mariadb.maxActive=50
|
||||
# 获取连接等待超时的时间
|
||||
mariadb.maxWait=60000
|
||||
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
mariadb.timeBetweenEvictionRunsMillis=60000
|
||||
# 一个连接在池中最小生存的时间,单位是毫秒
|
||||
mariadb.minEvictableIdleTimeMillis=300000
|
||||
# 是否打开PSCache
|
||||
mariadb.poolPreparedStatements=false
|
||||
# 指定每个连接上PSCache的大小
|
||||
mariadb.maxPoolPreparedStatementPerConnectionSize=20
|
||||
dataSource=Oracle
|
||||
|
||||
51
sso/src/main/resources/log4j.xml
Normal file
51
sso/src/main/resources/log4j.xml
Normal file
@@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
|
||||
<log4j:configuration debug="true">
|
||||
|
||||
|
||||
<!-- 在控制台输出的日志文件,info级别以上 -->
|
||||
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
|
||||
<param name="Encoding" value="UTF-8" />
|
||||
<param name="Threshold" value="ERROR" />
|
||||
<layout class="org.apache.log4j.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d %p %c %t %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<!--输出文件中,该文件中只能输出info级别的日志 -->
|
||||
<appender name="INFO" class="org.apache.log4j.DailyRollingFileAppender">
|
||||
<param name="Encoding" value="UTF-8" />
|
||||
<param name="File" value="c:/logs/sso/info/info.log" />
|
||||
<!--<param name="File" value="/usr/local/logs/sso/info/info.log" />-->
|
||||
<param name="DatePattern" value=".yyyy-MM-dd" />
|
||||
<param name="Append" value="true" />
|
||||
<layout class="org.apache.log4j.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d %p %c %t %m%n" />
|
||||
</layout>
|
||||
<filter class="org.apache.log4j.varia.LevelRangeFilter">
|
||||
<param name="LevelMin" value="INFO" />
|
||||
<param name="LevelMax" value="INFO" />
|
||||
</filter>
|
||||
</appender>
|
||||
<!--输出文件中,该文件中只能输出erro级别的日志 -->
|
||||
<appender name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
|
||||
<param name="Encoding" value="UTF-8" />
|
||||
<param name="File" value="c:/logs/sso/error/error.log" />
|
||||
<!--<param name="File" value="/usr/local/logs/sso/error/error.log" />-->
|
||||
<param name="DatePattern" value=".yyyy-MM-dd" />
|
||||
<param name="Append" value="true" />
|
||||
<layout class="org.apache.log4j.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d %p %c %t %m%n" />
|
||||
</layout>
|
||||
<filter class="org.apache.log4j.varia.LevelRangeFilter">
|
||||
<param name="LevelMin" value="ERROR" />
|
||||
<param name="LevelMax" value="ERROR" />
|
||||
</filter>
|
||||
</appender>
|
||||
<root>
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="INFO" />
|
||||
<appender-ref ref="ERROR" />
|
||||
<appender-ref ref="Console" />
|
||||
</root>
|
||||
|
||||
</log4j:configuration>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.mapper.configuration.DicDataMapper">
|
||||
<!-- 查询排序最大 -->
|
||||
<select id="selNumMax" resultType="int">
|
||||
select max(dic_number) from pqs_dicdata where state=1 order by dic_number desc
|
||||
</select>
|
||||
|
||||
<!-- 更新字典表根据主键-->
|
||||
<update id="updateByPrimaryKeyBySql">
|
||||
UPDATE PQS_DICDATA
|
||||
SET DIC_LEAVE = #{dicLeave}
|
||||
WHERE
|
||||
DIC_INDEX = #{dicIndex}
|
||||
</update>
|
||||
</mapper>
|
||||
@@ -0,0 +1,93 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.mapper.log.UserLogDetailMapper">
|
||||
|
||||
<!-- 日志 -->
|
||||
<resultMap type="com.njcn.pojo.log.UserLogDetail" id="UserLogDetailMapperMap" autoMapping="true">
|
||||
|
||||
</resultMap>
|
||||
<!-- 查询所有日志 -->
|
||||
<select id="getUserLog" resultMap="UserLogDetailMapperMap">
|
||||
select t.dictype_name as type,
|
||||
a.dic_name as name,
|
||||
u.USERLOG_DESCRIBE as describe,
|
||||
u.updatetime as updatetime,
|
||||
u.ip as ip,
|
||||
decode(a.DIC_LEAVE, 0, '普通', 1, '中等',2,'严重') as leval
|
||||
from pqs_userlog u ,
|
||||
pqs_dicdata a ,
|
||||
pqs_dictype t
|
||||
where u.type=a.dic_index
|
||||
and a.dic_type=t.dictype_index
|
||||
order by u.updatetime desc
|
||||
</select>
|
||||
<!-- 根据条件查询所有日志 -->
|
||||
<select id="getUserLogId" resultMap="UserLogDetailMapperMap">
|
||||
select t.dictype_name as type,
|
||||
a.dic_name as name,
|
||||
u.USERLOG_DESCRIBE as describe,
|
||||
u.updatetime as updatetime,
|
||||
u.ip as ip,
|
||||
decode(a.DIC_LEAVE, 0, '普通', 1, '中等',2,'严重') as leval
|
||||
from pqs_userlog u ,
|
||||
pqs_dicdata a ,
|
||||
pqs_dictype t
|
||||
where u.type=a.dic_index
|
||||
and a.dic_type=t.dictype_index
|
||||
and t.dictype_index like #{type}
|
||||
and a.dic_index like #{name}
|
||||
and to_number(to_char(u.updatetime, 'yyyyMMddHHmiss')) between #{startTime}
|
||||
and #{endTime}
|
||||
order by u.updatetime desc
|
||||
</select>
|
||||
<!-- 统计事件类型 -->
|
||||
<select id="geteventtype" resultMap="UserLogDetailMapperMap">
|
||||
select t.dictype_name as type,
|
||||
count(1) as num
|
||||
from pqs_userlog u ,
|
||||
pqs_dicdata a ,
|
||||
pqs_dictype t
|
||||
where u.type=a.dic_index
|
||||
and a.dic_type=t.dictype_index
|
||||
and to_number(to_char(u.updatetime, 'yyyyMMddHHmmss')) between #{startTime}
|
||||
and #{endTime}
|
||||
group by t.dictype_name
|
||||
</select>
|
||||
<!-- 统计详细事件 -->
|
||||
<select id="getdetailtype" resultMap="UserLogDetailMapperMap">
|
||||
select a.dic_name as name,
|
||||
count(1) as num
|
||||
from pqs_userlog u ,
|
||||
pqs_dicdata a ,
|
||||
pqs_dictype t
|
||||
where u.type=a.dic_index
|
||||
and a.dic_type=t.dictype_index
|
||||
and to_number(to_char(u.updatetime, 'yyyyMMddHHmmss')) between #{startTime}
|
||||
and #{endTime}
|
||||
group by a.dic_name
|
||||
</select>
|
||||
<!-- 统计用户统计 -->
|
||||
<select id="getUserStatistics" resultMap="UserLogDetailMapperMap">
|
||||
select b.loginname name,
|
||||
count(1) num
|
||||
from pqs_userlog a,
|
||||
pqs_user b
|
||||
where A.USERLOG_DESCRIBE like '%'||b.loginname||'%'
|
||||
and a.user_index=b.user_index
|
||||
and to_number(to_char(a.updatetime, 'yyyyMMddHHmmss')) between #{startTime}
|
||||
and #{endTime}
|
||||
group by b.loginname
|
||||
</select>
|
||||
|
||||
<delete id="delExpireLog" databaseId="Oracle">
|
||||
delete from pqs_userlog
|
||||
where rowid = (select rowid
|
||||
from (select UPDATETIME from pqs_userlog where UPDATETIME < #{endTime} order by UPDATETIME)
|
||||
where rownum = 1)
|
||||
</delete>
|
||||
|
||||
<delete id="delExpireLog" databaseId="MariaDB">
|
||||
delete from pqs_userlog
|
||||
where UPDATETIME = (select UPDATETIME from pqs_userlog where UPDATETIME < #{endTime} order by UPDATETIME LIMIT 1 )
|
||||
</delete>
|
||||
</mapper>
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.mapper.log.UserLoginMapper">
|
||||
|
||||
<!-- 日志 -->
|
||||
<resultMap type="com.njcn.pojo.log.UserLogin" id="UserLoginMapperMap" autoMapping="true">
|
||||
|
||||
</resultMap>
|
||||
<!-- 查询所有登录信息 -->
|
||||
<select id="getUserLogin" resultMap="UserLoginMapperMap">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
pqs_userlogin ul,
|
||||
pqs_user U
|
||||
WHERE
|
||||
ul.user_index = U .user_index
|
||||
AND TO_NUMBER (
|
||||
TO_CHAR (
|
||||
ul.loginTime,
|
||||
'yyyyMMddHHmiss'
|
||||
)
|
||||
) BETWEEN # { startTime }
|
||||
AND # { endTime }
|
||||
ORDER BY
|
||||
ul.loginTime DESC
|
||||
</select>
|
||||
<select id="getLastedLogin" resultType="userLogin" databaseId="MariaDB">
|
||||
SELECT * FROM (SELECT * FROM PQS_USERLOGIN WHERE USER_INDEX=#{userIndex} ORDER BY LOGINTIME DESC) a limit 1
|
||||
</select>
|
||||
|
||||
<select id="getLastedLogin" resultType="userLogin" databaseId="Oracle">
|
||||
SELECT * FROM (SELECT * FROM PQS_USERLOGIN WHERE USER_INDEX=#{userIndex} ORDER BY LOGINTIME DESC) where ROWNUM = 1
|
||||
</select>
|
||||
</mapper>
|
||||
35
sso/src/main/resources/mybatis/mappers/user/UserMapper.xml
Normal file
35
sso/src/main/resources/mybatis/mappers/user/UserMapper.xml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.njcn.mapper.user.UserMapper">
|
||||
|
||||
<update id="updateLockState">
|
||||
update pqs_user set state = #{state},login_error_times = 0 where user_index = #{userIndex}
|
||||
</update>
|
||||
|
||||
<update id="updateByPrimaryKeyBySql" parameterType="user">
|
||||
update pqs_user
|
||||
<set>
|
||||
<if test="userIndex != null">user_Index=#{userIndex},</if>
|
||||
<if test="name != null">name=#{name},</if>
|
||||
<if test="loginName != null">loginName=#{loginName},</if>
|
||||
<if test="password != null">password=#{password},</if>
|
||||
<if test="phone != null">phone=#{phone},</if>
|
||||
<if test="email != null">email=#{email},</if>
|
||||
<if test="registerTime != null">registerTime=#{registerTime},</if>
|
||||
<if test="psdvalidity != null">psdvalidity=#{psdvalidity},</if>
|
||||
<if test="loginTime != null">loginTime=#{loginTime},</if>
|
||||
<if test="state != null">state=#{state},</if>
|
||||
<if test="mark != null">mark=#{mark},</if>
|
||||
<if test="limitIpStart != null">limit_IpStart=#{limitIpStart},</if>
|
||||
<if test="limitIpEnd != null">limit_IpEnd=#{limitIpEnd},</if>
|
||||
<if test="limitTime != null">limit_Time=#{limitTime},</if>
|
||||
<if test="loginErrorTimes != null">LOGIN_ERROR_TIMES=#{loginErrorTimes},</if>
|
||||
<if test="casualUser != null">casual_User=#{casualUser},</if>
|
||||
<if test="firstErrorTime != null">firstError_Time=#{firstErrorTime},</if>
|
||||
<if test="lockTime != null">lock_Time=#{lockTime}</if>
|
||||
</set>
|
||||
where user_Index=#{userIndex}
|
||||
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
28
sso/src/main/resources/mybatis/mybatis-config.xml
Normal file
28
sso/src/main/resources/mybatis/mybatis-config.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
|
||||
<settings>
|
||||
<!-- 开启驼峰自动映射 -->
|
||||
<setting name="mapUnderscoreToCamelCase" value="true" />
|
||||
<!--输出mybatis执行的SQL日志-->
|
||||
<!-- <setting name="logImpl" value="STDOUT_LOGGING"/>-->
|
||||
<!--懒加载配置-->
|
||||
<setting name="lazyLoadingEnabled" value="true"/>
|
||||
<setting name="aggressiveLazyLoading" value="false"/>
|
||||
<setting name="mapUnderscoreToCamelCase" value="true"/>
|
||||
|
||||
</settings>
|
||||
<!--使用mybatis的分页插件-->
|
||||
<!-- <plugins> -->
|
||||
<!-- <plugin interceptor="com.github.pagehelper.PageHelper"> -->
|
||||
<!-- <property name="dialect" value="mysql"/> -->
|
||||
<!-- 该参数默认为false -->
|
||||
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
|
||||
<!-- <property name="rowBoundsWithCount" value="true"/> -->
|
||||
<!-- </plugin> -->
|
||||
<!-- </plugins> -->
|
||||
|
||||
</configuration>
|
||||
40
sso/src/main/resources/spring/applicationContext-mybatis.xml
Normal file
40
sso/src/main/resources/spring/applicationContext-mybatis.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="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-4.1.xsd">
|
||||
|
||||
<!-- 定义Mybatis的SqlSessionFactory -->
|
||||
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
|
||||
<!-- 定义数据源 -->
|
||||
<property name="dataSource" ref="${dataSource}"/>
|
||||
<property name="databaseIdProvider" ref="databaseIdProvider"/>
|
||||
<!-- 指定mybatis全局配置文件 -->
|
||||
<property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
|
||||
<!-- 扫描mappers目录以及子目录下的所有xml文件 -->
|
||||
<property name="mapperLocations" value="classpath:mybatis/mappers/**/*.xml"/>
|
||||
<!-- 别名扫描包 -->
|
||||
<property name="typeAliasesPackage" value="com.njcn.pojo com.njcn.sso.pojo"/>
|
||||
</bean>
|
||||
|
||||
<bean id="transactionManagerManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
|
||||
<property name="dataSource" ref="${dataSource}"/>
|
||||
</bean>
|
||||
|
||||
<!-- 定义Mapper接口扫描器 -->
|
||||
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
|
||||
<property name="basePackage" value="com.njcn.mapper com.sso.mapper"/>
|
||||
</bean>
|
||||
|
||||
<!--配置通用mapper -->
|
||||
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
|
||||
<property name="basePackage" value="com.njcn.mapper com.sso.mapper"/>
|
||||
<property name="properties">
|
||||
<value>
|
||||
mappers=tk.mybatis.mapper.common.Mapper
|
||||
<!-- 仅对insert有效 -->
|
||||
ORDER=BEFORE
|
||||
</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
23
sso/src/main/resources/spring/applicationContext-redis.xml
Normal file
23
sso/src/main/resources/spring/applicationContext-redis.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="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"
|
||||
default-lazy-init="true">
|
||||
|
||||
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
|
||||
<property name="maxIdle" value="30"/><!-- 最大闲置 -->
|
||||
<property name="minIdle" value="10"/><!-- 最小闲置 -->
|
||||
<property name="testOnBorrow" value="true"/><!-- 可以获取 -->
|
||||
<!--<property name="testOnReturn" value="true"/>-->
|
||||
</bean>
|
||||
<!-- redis 配置,也可以把配置挪到properties配置文件中,再读取 -->
|
||||
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
|
||||
<constructor-arg index="0" ref="jedisPoolConfig" />
|
||||
<!-- 端口,默认6379 -->
|
||||
<constructor-arg index="2" value="6379" name="port" type="int" />
|
||||
<constructor-arg index="3" value="5000" name="timeout" type="int" />
|
||||
<constructor-arg index="1" value="127.0.0.1" name="host" type="java.lang.String" />
|
||||
<!--<constructor-arg index="4" value="yourpassword" name="password" type="java.lang.String" />-->
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
191
sso/src/main/resources/spring/applicationContext-shiro.xml
Normal file
191
sso/src/main/resources/spring/applicationContext-shiro.xml
Normal file
@@ -0,0 +1,191 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
|
||||
xsi:schemaLocation="
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||
|
||||
<description>== Shiro Components ==</description>
|
||||
|
||||
<!-- 会话Session ID生成器 -->
|
||||
<bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/>
|
||||
|
||||
<!-- 会话Cookie模板 -->
|
||||
<bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie">
|
||||
<constructor-arg value="sso"/>
|
||||
<property name="httpOnly" value="true"/>
|
||||
<!--cookie的有效时间 -->
|
||||
<property name="maxAge" value="-1"/>
|
||||
<property name="name" value="ssoCookie" />
|
||||
</bean>
|
||||
|
||||
<!-- user shiro session listener -->
|
||||
<bean id="userSessionListener" class="com.njcn.shiro.listener.UserSessionListener">
|
||||
<property name="userShiroSessionRepository" ref="jedisShiroSessionRepository"/>
|
||||
</bean>
|
||||
|
||||
<!-- user shiro session dao -->
|
||||
<bean id="userShiroSessionDAO" class="com.njcn.shiro.session.UserShiroSessionDao">
|
||||
<property name="userShiroSessionRepository" ref="jedisShiroSessionRepository"/>
|
||||
<property name="sessionIdGenerator" ref="sessionIdGenerator"/>
|
||||
</bean>
|
||||
|
||||
<!-- 手动操作Session,管理Session -->
|
||||
<bean id="userSessionManager" class="com.njcn.shiro.session.UserSessionManager">
|
||||
<property name="userShiroSessionRepository" ref="jedisShiroSessionRepository"/>
|
||||
</bean>
|
||||
|
||||
<!-- Session Manager -->
|
||||
<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
|
||||
<!-- 相隔多久检查一次session的有效性 -->
|
||||
<property name="sessionValidationInterval" value="-1"/>
|
||||
<!-- session 有效时间为半小时 (毫秒单位)-->
|
||||
<property name="globalSessionTimeout" value="-1"/>
|
||||
<property name="sessionDAO" ref="userShiroSessionDAO"/>
|
||||
<!-- session 监听,可以多个。 -->
|
||||
<property name="sessionListeners">
|
||||
<list>
|
||||
<ref bean="userSessionListener"/>
|
||||
</list>
|
||||
</property>
|
||||
<!-- 间隔多少时间检查,不配置是60分钟 -->
|
||||
<property name="sessionValidationScheduler" ref="sessionValidationScheduler"/>
|
||||
<!-- 会话Cookie模板 -->
|
||||
<property name="sessionIdCookie" ref="sessionIdCookie"/>
|
||||
</bean>
|
||||
|
||||
<!-- 会话验证调度器 -->
|
||||
<bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
|
||||
<property name="sessionManager" ref="sessionManager"/>
|
||||
</bean>
|
||||
|
||||
<!-- shiro 缓存实现,对ShiroCacheManager,我是采用redis的实现 -->
|
||||
<bean id="jedisShiroCacheManager" class="com.njcn.shiro.cache.impl.JedisShiroCacheManager">
|
||||
<property name="jedisManager" ref="jedisManager"/>
|
||||
</bean>
|
||||
|
||||
<!-- 用户缓存 -->
|
||||
<bean id="userShiroCacheManager" class="com.njcn.shiro.cache.impl.UserShiroCacheManager">
|
||||
<property name="shiroCacheManager" ref="jedisShiroCacheManager"/>
|
||||
</bean>
|
||||
|
||||
<!-- 安全管理器 -->
|
||||
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
|
||||
<property name="realm" ref="dataRealm"/>
|
||||
<property name="sessionManager" ref="sessionManager"/>
|
||||
<property name="cacheManager" ref="userShiroCacheManager"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="jedisManager" class="com.njcn.utils.redis.JedisManager" />
|
||||
|
||||
|
||||
<!-- session 创建、删除、查询 -->
|
||||
<bean id="jedisShiroSessionRepository" class="com.njcn.shiro.session.impl.JedisShiroSessionRepository" >
|
||||
<property name="jedisManager" ref="jedisManager"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<!-- 静态注入,相当于调用SecurityUtils.setSecurityManager(securityManager) -->
|
||||
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
|
||||
<property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
|
||||
<property name="arguments" ref="securityManager"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<!-- 静态注入 jedisShiroSessionRepository-->
|
||||
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
|
||||
<property name="staticMethod" value="com.njcn.shiro.filter.KickoutSessionFilter.setUserShiroSessionRepository"/>
|
||||
<property name="arguments" ref="jedisShiroSessionRepository"/>
|
||||
</bean>
|
||||
|
||||
<!-- 静态注入 jedisShiroSessionRepository-->
|
||||
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
|
||||
<property name="staticMethod" value="com.njcn.shiro.filter.LoginFilter.setUserShiroSessionRepository"/>
|
||||
<property name="arguments" ref="jedisShiroSessionRepository"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="dataRealm" class="com.njcn.shiro.realm.DataRealm" />
|
||||
|
||||
<!--
|
||||
自定义角色过滤器 支持多个角色可以访问同一个资源 eg:/home.jsp = authc,roleOR[admin,user]
|
||||
用户有admin或者user角色 就可以访问
|
||||
-->
|
||||
|
||||
<!-- 认证数据库存储-->
|
||||
<bean id="login" class="com.njcn.shiro.filter.LoginFilter"/>
|
||||
<bean id="role" class="com.njcn.shiro.filter.RoleFilter"/>
|
||||
<bean id="permission" class="com.njcn.shiro.filter.PermissionFilter"/>
|
||||
<bean id="simple" class="com.njcn.shiro.filter.SimpleAuthFilter"/>
|
||||
|
||||
<!-- session 校验单个用户是否多次登录 -->
|
||||
<bean id="kickoutSessionFilter" class="com.njcn.shiro.filter.KickoutSessionFilter" />
|
||||
|
||||
<!-- shiro filter配置 -->
|
||||
<bean id="shiroSecurityFilter" class="com.njcn.shiro.response.NjcnShiroFilterFactoryBean">
|
||||
<!-- shiro 的核心安全接口 -->
|
||||
<property name="securityManager" ref="securityManager" />
|
||||
<!-- 要求登录时的链接 -->
|
||||
<property name="loginUrl" value="/" />
|
||||
<!-- 登陆成功后要跳转的连接 -->
|
||||
<property name="successUrl" value="/main" />
|
||||
<!-- 未授权时要跳转的连接 -->
|
||||
<property name="unauthorizedUrl" value="/views/auth/unauthorized" />
|
||||
<!-- shiro 连接约束配置 -->
|
||||
<!-- url级别权限权限控制 -->
|
||||
<property name="filterChainDefinitions">
|
||||
<value>
|
||||
<!--不需要权限所有用户能直接获取的资源-->
|
||||
/css/**=anon
|
||||
/js/**=anon
|
||||
/images/**=anon
|
||||
/json/**=anon
|
||||
/font/**=anon
|
||||
/jspJS/**=anon
|
||||
/jspCSS/**=anon
|
||||
/tiles/**=anon
|
||||
/theme/**=anon
|
||||
/user/getImgCode=anon
|
||||
/user/login=anon
|
||||
/user/generateRSAKey=anon
|
||||
/user/generateSM2Key=anon
|
||||
/user/loginout=anon
|
||||
/druid/**=anon
|
||||
/druid=anon
|
||||
/auth/**=anon
|
||||
/njcn/**=anon
|
||||
/user/judgeLogin=anon
|
||||
/=anon
|
||||
/login=anon
|
||||
/user/modifyPwd=anon
|
||||
/user/visitor=anon
|
||||
/user/**=login,kickout
|
||||
<!-- 控制页面 此处过于冗余,是因为没有将页面与方法绑定在一个controller中,造成路径相同,权限限制却不同的局面 -->
|
||||
</value>
|
||||
</property>
|
||||
<property name="filters">
|
||||
<util:map>
|
||||
<entry key="login" value-ref="login" />
|
||||
<entry key="role" value-ref="role" />
|
||||
<entry key="simple" value-ref="simple" />
|
||||
<entry key="permission" value-ref="permission" />
|
||||
<entry key="kickout" value-ref="kickoutSessionFilter" />
|
||||
</util:map>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
|
||||
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
|
||||
|
||||
<bean
|
||||
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
|
||||
depends-on="lifecycleBeanPostProcessor" >
|
||||
<property name="proxyTargetClass" value="true" />
|
||||
</bean>
|
||||
|
||||
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
|
||||
<property name="securityManager" ref="securityManager" />
|
||||
</bean>
|
||||
</beans>
|
||||
|
||||
112
sso/src/main/resources/spring/applicationContext.xml
Normal file
112
sso/src/main/resources/spring/applicationContext.xml
Normal file
@@ -0,0 +1,112 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
|
||||
<description>Spring公共配置</description>
|
||||
<!-- 使用spring自带的占位符替换功能 -->
|
||||
<bean id="encryptPropertyPlaceholderConfigurer"
|
||||
class="com.njcn.utils.EncryptPropertyPlaceholderConfigurer">
|
||||
<!-- 允许JVM参数覆盖 -->
|
||||
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
|
||||
<!-- 忽略没有找到的资源文件 -->
|
||||
<property name="ignoreResourceNotFound" value="true"/>
|
||||
<!-- 配置资源文件 -->
|
||||
<property name="locations">
|
||||
<list>
|
||||
<value>classpath:jdbc.properties</value>
|
||||
<value>classpath:java.properties</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
<!--spring自带的定时任务方案解决需要配置的-->
|
||||
<!-- <task:annotation-driven/> -->
|
||||
<!-- 数据源配置,使用应用内的DBCP数据库连接池 ****start****-->
|
||||
<bean id="MariaDB" class="com.alibaba.druid.pool.DruidDataSource"
|
||||
init-method="init" destroy-method="close" lazy-init="true">
|
||||
<property name="driverClassName" value="${mariadb.driverClass}"/>
|
||||
<property name="url" value="${mariadb.jdbcUrl}"/>
|
||||
<property name="username" value="${mariadb.user}"/>
|
||||
<property name="password" value="${mariadb.password}"/>
|
||||
<!-- 配置初始化大小、最小、最大 -->
|
||||
<property name="initialSize" value="${mariadb.initialSize}"/>
|
||||
<property name="minIdle" value="${mariadb.minIdle}"/>
|
||||
<property name="maxActive" value="${mariadb.maxActive}"/>
|
||||
<!-- 配置获取连接等待超时的时间 -->
|
||||
<property name="maxWait" value="${mariadb.maxWait}"/>
|
||||
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
|
||||
<property name="timeBetweenEvictionRunsMillis" value="${mariadb.timeBetweenEvictionRunsMillis}"/>
|
||||
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
|
||||
<property name="minEvictableIdleTimeMillis" value="${mariadb.minEvictableIdleTimeMillis}"/>
|
||||
<property name="testWhileIdle" value="true"/>
|
||||
<property name="validationQuery" value="SELECT 'x' from dual"/>
|
||||
<property name="testOnBorrow" value="false"/>
|
||||
<property name="testOnReturn" value="false"/>
|
||||
<property name="removeAbandoned" value="false"/>
|
||||
<property name="removeAbandonedTimeout" value="300"/>
|
||||
<property name="logAbandoned" value="false"/>
|
||||
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
|
||||
<property name="poolPreparedStatements" value="${mariadb.poolPreparedStatements}"/>
|
||||
<property name="maxPoolPreparedStatementPerConnectionSize"
|
||||
value="${mariadb.maxPoolPreparedStatementPerConnectionSize}"/>
|
||||
<!-- 配置监控统计拦截的filters -->
|
||||
<property name="filters" value="stat"/>
|
||||
</bean>
|
||||
|
||||
<bean id="Oracle" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"
|
||||
lazy-init="true">
|
||||
<property name="driverClassName" value="${oracle.driverClass}"/>
|
||||
<property name="url" value="${oracle.jdbcUrl}"/>
|
||||
<property name="username" value="${oracle.user}"/>
|
||||
<property name="password" value="${oracle.password}"/>
|
||||
<!-- 配置初始化大小、最小、最大 -->
|
||||
<property name="initialSize" value="${oracle.initialSize}"/>
|
||||
<property name="minIdle" value="${oracle.minIdle}"/>
|
||||
<property name="maxActive" value="${oracle.maxActive}"/>
|
||||
<!-- 配置获取连接等待超时的时间 -->
|
||||
<property name="maxWait" value="${oracle.maxWait}"/>
|
||||
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
|
||||
<property name="timeBetweenEvictionRunsMillis" value="${oracle.timeBetweenEvictionRunsMillis}"/>
|
||||
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
|
||||
<property name="minEvictableIdleTimeMillis" value="${oracle.minEvictableIdleTimeMillis}"/>
|
||||
<property name="testWhileIdle" value="true"/>
|
||||
<property name="validationQuery" value="SELECT 'x' from dual"/>
|
||||
<property name="testOnBorrow" value="false"/>
|
||||
<property name="testOnReturn" value="false"/>
|
||||
<property name="removeAbandoned" value="false"/>
|
||||
<property name="removeAbandonedTimeout" value="300"/>
|
||||
<property name="logAbandoned" value="false"/>
|
||||
<!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->
|
||||
<property name="poolPreparedStatements" value="${oracle.poolPreparedStatements}"/>
|
||||
<property name="maxPoolPreparedStatementPerConnectionSize"
|
||||
value="${oracle.maxPoolPreparedStatementPerConnectionSize}"/>
|
||||
<!-- 配置监控统计拦截的filters -->
|
||||
<property name="filters" value="stat"/>
|
||||
</bean>
|
||||
|
||||
<bean id="vendorProperties"
|
||||
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
|
||||
<property name="properties">
|
||||
<props>
|
||||
<prop key="Oracle">Oracle</prop>
|
||||
<prop key="MariaDB">MariaDB</prop>
|
||||
</props>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="databaseIdProvider" class="org.apache.ibatis.mapping.VendorDatabaseIdProvider">
|
||||
<property name="properties" ref="vendorProperties"/>
|
||||
</bean>
|
||||
|
||||
<bean class="com.njcn.utils.SpringContextUtil"/>
|
||||
<bean id="log-filter" class="com.alibaba.druid.filter.logging.Log4jFilter">
|
||||
<property name="resultSetLogEnabled" value="false"/>
|
||||
<property name="statementExecutableSqlLogEnable" value="true"/>
|
||||
</bean>
|
||||
<!-- 数据源配置,使用应用内的DBCP数据库连接池 ****end****-->
|
||||
<!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
|
||||
<context:component-scan base-package="com.njcn,com.sso">
|
||||
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
|
||||
</context:component-scan>
|
||||
</beans>
|
||||
41
sso/src/main/resources/spring/springmvc-config.xml
Normal file
41
sso/src/main/resources/spring/springmvc-config.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:mvc="http://www.springframework.org/schema/mvc"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans
|
||||
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
|
||||
http://www.springframework.org/schema/context
|
||||
http://www.springframework.org/schema/context/spring-context-4.1.xsd
|
||||
http://www.springframework.org/schema/mvc
|
||||
http://www.springframework.org/schema/mvc/spring-mvc.xsd"
|
||||
default-lazy-init="true">
|
||||
|
||||
<!-- 注解驱动 -->
|
||||
<mvc:annotation-driven>
|
||||
<mvc:message-converters register-defaults="true">
|
||||
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
|
||||
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
|
||||
</bean>
|
||||
</mvc:message-converters>
|
||||
</mvc:annotation-driven>
|
||||
|
||||
<context:component-scan base-package="com.sso.controller"/>
|
||||
|
||||
<mvc:interceptors>
|
||||
<mvc:interceptor>
|
||||
<mvc:mapping path="/**"/>
|
||||
<bean class="com.njcn.interceptor.CSRFInterceptor"/>
|
||||
</mvc:interceptor>
|
||||
</mvc:interceptors>
|
||||
|
||||
<!--处理静态资源的拦截问题-->
|
||||
<mvc:default-servlet-handler/>
|
||||
|
||||
<!-- 视图解析器 -->
|
||||
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
|
||||
<property name="prefix" value="/WEB-INF/views/"/>
|
||||
<property name="suffix" value=".jsp"/>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
Reference in New Issue
Block a user