集成方案.txt 4.42 KB
0. 说明:
    0.1 本文档默认使用Velocity模板文件
    0.2 默认使用diligrp-website-util-x.x.x.jar中的public class BaseController extends VelocitySupport
    0.3 默认存在default.vm

1. 引用依赖
<dependency>
    <groupId>com.diligrp.manage</groupId>
    <artifactId>diligrp-manage-sdk</artifactId>
    <version>0.0.2-SNAPSHOT</version>
</dependency>

2.引入Redis(已有Redis情况下)
增加:
	<bean id="manageRedisUtil" class="com.diligrp.website.util.redis.impl.RedisUtilImpl">
		<property name="shardedJedisPool" ref="shardedJedisPool" />
		<!-- <property name="keyRule" value="(.*)+" /> -->
	</bean>
	
3.添加无头菜单的Velocity模板文件
    3.1 复制default.vm,建议命名为onlyContent.vm
    3.2 删除#parse("layout/header.vm")
    3.3 删除#parse("layout/navigation.vm")
    3.4 删除class: main-content

4. 替换无头菜单的Velocity模板
    4.1 BaseController继承自VelocitySupport, 里面有个velocityDefaultLayout参数, 用来控制使用主模板.
    4.2 在spring-mvc.xml中添加:
        <bean id="velocityDefaultLayout" class="java.lang.String">
            <constructor-arg value="${project.view.VMDefault}"/>
        </bean>
    4.3 为了使用之前的default.vm自定义菜单进行开发, 所以建议在pom中配置属性project.view.VMDefault, 配置值为onlyContent.vm

5. 引入拦截器
    5.1 删除0.0.1中添加的拦截器配置
    5.2 在web.xml中添加servletFilter拦截器. 加强了权限的拦截, 所以调整了实现
        <!--权限拦截-->
        <filter>
            <filter-name>sessionFilter</filter-name>
            <filter-class>com.diligrp.manage.sdk.session.SessionFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>sessionFilter</filter-name>
            <url-pattern>*</url-pattern>
        </filter-mapping>

    5.3 添加配置文件manage.properties, 填充内容:
        #后台权限系统域名
        manage.domain = ${conf.manage.domain}
        #是否开启过滤
        manage.enable = ${conf.manage.enable}
        #包含列表
        manage.includes = ${conf.manage.includes}
        #排除列表
        manage.excludes = ${conf.manage.excludes}
        #当前系统的标记
        manage.system = ${conf.manage.system}
        #是否开启权限接入点爬取
        mange.spider = ${conf.manage.spider}

    5.4 在spring配置文件中引入manage.properties. 例:
        <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
      		<property name="locations">
      			<list>
      				<value>classpath:db.properties</value>
      				<value>classpath:manage.properties</value>
      			</list>
      		</property>
      		<property name="ignoreUnresolvablePlaceholders" value="true" />
      	</bean>

    5.5 在pom.xml的各个properties节点中引入配置
        <!--权限相关配置-->
        <conf.manage.enable>true</conf.manage.enable>
        <conf.manage.spider>true</conf.manage.spider>
        <conf.manage.system>manage</conf.manage.system>
        <conf.manage.domain>http://manage.nong12.com/</conf.manage.domain>
        <conf.manage.includes>^/.*\.do</conf.manage.includes>
        <conf.manage.excludes>^/noAccess.do$,^/welcome.do$,^/loginControl/.*,^/api/.*</conf.manage.excludes>

        注: conf.manage.system一定要配置成权限系统中分配给各系统的编码
            conf.manage.spider开关用于抓去系统中的资源点, 如URL, 片段. 建议在测试环境中开启,

6. 获取用户信息
    6.1 在需要用户信息的地方调用以下代码. 当关闭拦截时将会提供一个默认的测试帐户
    SessionContext sessionContext = SessionContext.getSessionContext();
    UserTicket user = sessionContext.getUserTicket();
    注: sessionContext保存于ThreadLocal中

7. fragment级别权限控制.
    7.1 首先在各个需要加入权限控制的页面元素结点上加入两个属性:
        diliAnchor="manage_resource_add" diliAnchorTxt="添加资源"
        diliAnchor为权限的KEY, diliAnchorTxt为权限的中文备注.
        例:
        <div diliAnchor="manage_resource_add" diliAnchorTxt="添加资源">
            <a href="$url_save" class="btn btn-success btn-sm ">添加</a>
        </div>

        权限锚点加入后, 权限SDK会自动的去扫描. 然后需要去认领后才会起作用

8. 配置后台管理系统Host
开发环境:192.168.1.203 manage.nong12.com
测试环境:192.168.1.12 manage.nong12.com