1.web.xml 迁移
filter迁移
/**
* 注册filter * * @return */ @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean authenticationFilterbean = new FilterRegistrationBean(new AuthenticationFilter()); Map<String, String> authenticationFilterInitPara = new HashMap<String, String>(); authenticationFilterInitPara.put("authUrlPattern", "/auth"); authenticationFilterInitPara.put("authStatusUrlPattern", "/authStatus"); authenticationFilterInitPara.put("popupLoginSuccessUrlPattern", "/popupLoginSuccess"); authenticationFilterbean.setInitParameters(authenticationFilterInitPara); authenticationFilterbean.addUrlPatterns("/*"); return authenticationFilterbean;}
servlet注册
@Bean
public ServletRegistrationBean AuthservletRegistrationBean() { ServletRegistrationBean authServlet = new ServletRegistrationBean(new AuthenticationServlet(), "/auth"); authServlet.setLoadOnStartup(2); return authServlet; }
listener注册
@Bean public ServletListenerRegistrationBean ProviderContextListenerRegistrationBean() { ServletListenerRegistrationBean listenerRegistrationBean = new ServletListenerRegistrationBean(new ProviderContextListener()); return listenerRegistrationBean; }
context-param初始化参数
new ServletContextInitializer() {
@Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.setInitParameter("auth-timeout-seconds", "3600"); servletContext.setInitParameter("auth-code-timeout-seconds", "60"); servletContext.setInitParameter("request-params-snapshot-timeout-seconds", "300"); servletContext.setInitParameter("webAppRootKey", "slvcms-admin"); } }
error页面配置
@Component
@Slf4j public class ErrorPageConfig implements ErrorPageRegistrar { @Override public void registerErrorPages(ErrorPageRegistry registry) { ErrorPage e404=new ErrorPage(HttpStatus.NOT_FOUND,"/404.jsp"); ErrorPage e500=new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR,"/404.jsp"); registry.addErrorPages(e404,e500); } } 拦截器和默认首页配置
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { //注册LoginHandlerInterceptor拦截器 InterceptorRegistration registration = registry.addInterceptor(new LoginHandlerInterceptor()); //所有路径都被拦截 registration.addPathPatterns("/**"); InterceptorRegistration httpOnlyInterceptor = registry.addInterceptor(new HttpOnlyInterceptor()); //所有路径都被拦截 httpOnlyInterceptor.addPathPatterns("/**"); } /** * 默认首页设置,当请求时项目地址的时候 返回login */ @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:index.jsp"); } } 2.jboss容器需增加配置jboss-deployment-structure.xml
<?xml version="1.0" encoding="UTF-8"?> <!--主要是为了使用应用自己的日志系统 --> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.apache.log4j"/> <module name="org.slf4j" /> <module name="org.slf4j.impl" /> <module name="org.slf4j.jcl-over-slf4j" /> <module name="org.slf4j.ext" /> <module name="org.jboss.as.jsf" /> <module name="org.jboss.as.jsf-injection" /> <module name="com.fasterxml.jackson.core.jackson-core" /> <module name="com.fasterxml.jackson.core.jackson-annotations" /> <module name="com.fasterxml.jackson.core.jackson-databind" /> <module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8" /> <module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310" /> <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" /> <module name="org.jboss.resteasy.resteasy-jackson2-provider" /> <module name="org.jboss.resteasy.resteasy-jackson-provider" /> <module name="javax.faces.api" slot="main"/> <module name="com.sun.jsf-impl" slot="main"/> </exclusions> </deployment> </jboss-deployment-structure>
3.shiro权限配置迁移 新建ShiroConfig类
package com.fh.config; import com.fh.filter.JwtFilter; import com.fh.interceptor.shiro.MyCredentialsMatcher; import com.fh.interceptor.shiro.ShiroRealm; import org.apache.shiro.cache.ehcache.EhCacheManager; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.web.mgt.DefaultWebSecurityManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; import javax.servlet.Filter; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; /** * @author 用户名 * @Type ShiroConfig.java * @Desc * @date 2021/2/20 10:11 */ @Configuration public class ShiroConfig { private static final Logger logger = LoggerFactory .getLogger(ShiroConfig.class); /** * ShiroFilterFactoryBean 处理拦截资源文件过滤器 * </br>1,配置shiro安全管理器接口securityManage; * </br>2,shiro 连接约束配置filterChainDefinitions; */ @Bean public ShiroFilterFactoryBean shiroFilterFactoryBean( org.apache.shiro.mgt.SecurityManager securityManager) { //shiroFilterFactoryBean对象 ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); // 配置shiro安全管理器 SecurityManager shiroFilterFactoryBean.setSecurityManager(securityManager); // 指定要求登录时的链接 shiroFilterFactoryBean.setLoginUrl("/"); // 登录成功后要跳转的链接 shiroFilterFactoryBean.setSuccessUrl("/main/index"); // 未授权时跳转的界面; shiroFilterFactoryBean.setUnauthorizedUrl("/login_toLogin"); // filterChainDefinitions拦截器 Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(); // 配置不会被拦截的链接 从上向下顺序判断 filterChainDefinitionMap.put("/websocket/**", "anon"); filterChainDefinitionMap.put("/users/**", "anon"); filterChainDefinitionMap.put("/auth", "anon"); filterChainDefinitionMap.put("/authStatus", "anon"); filterChainDefinitionMap.put("/jobDispatcher", "anon"); // 添加自己的过滤器并且取名为jwt Map<String, Filter> filterMap = new HashMap<String, Filter>(1); filterMap.put("jwt", new JwtFilter()); filterChainDefinitionMap.put("/**", "jwt"); shiroFilterFactoryBean.setFilters(filterMap); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); logger.debug("Shiro拦截器工厂类注入成功"); return shiroFilterFactoryBean; } /** * shiro安全管理器设置realm认证 * * @return */ @Bean("securityManager") public DefaultWebSecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); // 设置realm. securityManager.setRealm(shiroRealm()); //注入ehcache缓存管理器; securityManager.setCacheManager(ehCacheManager()); return securityManager; } /** * 身份认证realm; (账号密码校验;权限等) * * @return */ @Bean public ShiroRealm shiroRealm() { ShiroRealm shiroRealm = new ShiroRealm(); shiroRealm.setCredentialsMatcher(new MyCredentialsMatcher()); return shiroRealm; } /** * ehcache缓存管理器;shiro整合ehcache: * 通过安全管理器:securityManager * * @return EhCacheManager */ @Bean public EhCacheManager ehCacheManager() { logger.debug("=====shiro整合ehcache缓存:ShiroConfiguration.getEhCacheManager()"); EhCacheManager cacheManager = new EhCacheManager(); cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml"); return cacheManager; } /** * 下面的代码是添加注解支持 * @return */ @Bean public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); return defaultAdvisorAutoProxyCreator; } @Bean public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @Bean public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); advisor.setSecurityManager(securityManager); return advisor; } }
相关推荐
基于SpringMVC+Spring+MyBatis个人技术博客系统源码.zip 完整代码,可运行 项目描述 基于SSM实现的一个个人博客系统,适合初学SSM和个人博客制作的同学学习。有了这个源码,直接买了阿里云或腾讯服务器,就可以部署...
在“项目SpringMVC+MYbatis+Spring+SpringBoot”中,这四个技术的整合意味着开发者可以构建一个高效、易于维护的Web应用。Spring作为基础,提供整体架构支持;SpringMVC处理Web请求;MyBatis负责数据库交互;而...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...
SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+Mybatis集成开发环境SpringMVC+Spring+...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,它将Spring MVC作为表现层框架,Spring作为业务层容器,MyBatis作为数据访问层框架。下面将详细介绍这三个组件以及它们如何协同工作。 *...
基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+MyBatis+Maven项目案例源码+数据库.zip 基于SpringMVC+Spring+...
基于SpringMVC+Spring3+Mybatis框架的OA项目 基于SpringMVC+Spring3+Mybatis框架的OA项目 基于SpringMVC+Spring3+Mybatis框架的OA项目 基于SpringMVC+Spring3+Mybatis框架的OA项目 基于SpringMVC+Spring3+Mybatis...
基于SpringMVC+Spring3+Mybatis框架的OA项目源码.zip 基于SpringMVC+Spring3+Mybatis框架的OA项目源码.zip 基于SpringMVC+Spring3+Mybatis框架的OA项目源码.zip 基于SpringMVC+Spring3+Mybatis框架的OA项目源码.zip ...
基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统 基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统 基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统 基于SSM(springmvc+spring+mybatis)+...
标题 "基于 SpringBoot + Spring + SpringMvc+Mybatis +Layui 开发后台管理系统" 描述了一个使用多种流行Java技术栈构建的管理系统的实例。这个系统整合了Spring Boot、Spring、Spring MVC、MyBatis以及Layui前端...
基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统源码.zip 基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统源码.zip 基于SSM(springmvc+spring+mybatis)+Mysql图书管理系统源码.zip 基于SSM...
《Spring+SpringMVC+MyBatis+SpringBoot视频01》是一套全面介绍Java开发中常用技术框架的教程,涵盖了Spring、SpringMVC、MyBatis和SpringBoot的核心概念和实战应用。以下是对这些标签及文件内容的详细解读: 1. **...
【Spring+SpringMVC+MyBatis+SpringBoot视频03】这个教程组合涵盖了四个关键的Java开发框架:Spring、SpringMVC、MyBatis和SpringBoot。这是一套全面的教程,旨在帮助开发者深入理解这些框架的核心概念,并熟练地在...
"SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...
这是一个基于Java技术栈的完整网站后台管理系统,主要利用了Spring Boot、MyBatis、Spring MVC、Spring Security和Redis等核心技术。下面将详细讲解这些技术及其在系统中的作用。 首先,Spring Boot是Spring框架的...
【Spring+SpringMVC+MyBatis+SpringBoot视频04】这个课程主要涵盖了四个核心的Java开发框架:Spring、SpringMVC、MyBatis以及SpringBoot。这四大框架是现代Java Web应用开发中的基石,提供了高效、灵活的组件管理和...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...