SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】 博客分类: SpringSecuritySpring SpringSecurit

SSM项目集成Spring Security 4.X版本(使用spring-security.xml 配置文件方式) 实战目标: Authentication:认证,实现用户认证登录 Authorization:授权,设定用户的资源,访问权限。 阅读详情

 SpringSecurity的配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下:

 

applicationContext-SpringSecurityConfig.xml

Xml代码   收藏代码
  1. <http security="none" pattern="/static/**" />  
  2.     <http security="none" pattern="/**/*.jsp" />  
  3.   
  4.     <http auto-config='true' access-decision-manager-ref="accessDecisionManager" access-denied-page="/login"  
  5.         use-expressions="true">  
  6.         <logout logout-url="/logout" invalidate-session="true"  
  7.             logout-success-url="/login" />  
  8.   
  9.   
  10.         <form-login login-page="/login" authentication-failure-url="/login?error=1"  
  11.             login-processing-url="/j_spring_security_check" password-parameter="j_password"  
  12.             username-parameter="j_username" />  
  13.   
  14.   
  15.         <intercept-url pattern="/**/*.do*" access="hasRole('ROLE_USER')" />  
  16.         <intercept-url pattern="/**/*.htm" access="hasRole('ROLE_ADMIN')" />  
  17.   
  18.         <session-management session-fixation-protection="changeSessionId">  
  19.             <concurrency-control max-sessions="1"  
  20.                 expired-url="/access/sameLogin.do" />  
  21.         </session-management>  
  22.   
  23.         <remember-me key="webmvc#FD637E6D9C0F1A5A67082AF56CE32485"  
  24.             remember-me-parameter="remember-me" />  
  25.     </http>  
  26.   
  27.     <!-- 启用表达式 为了后面的投票器做准备 -->  
  28.     <beans:bean  
  29.         class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"  
  30.         id="expressionHandler" />  
  31.     <beans:bean  
  32.         class="org.springframework.security.web.access.expression.WebExpressionVoter"  
  33.         id="expressionVoter">  
  34.         <beans:property name="expressionHandler" ref="expressionHandler" />  
  35.     </beans:bean>  
  36.   
  37.     <!-- Automatically receives AuthenticationEvent messages -->  
  38.     <beans:bean id="loggerListener"  
  39.         class="org.springframework.security.authentication.event.LoggerListener" />  
  40.     <beans:bean id="authorizationListener"  
  41.         class="org.springframework.security.access.event.LoggerListener" />  
  42.   
  43.     <!-- 认证管理器,使用自定义的UserDetailsService,并对密码采用md5加密 -->  
  44.     <authentication-manager>  
  45.         <authentication-provider user-service-ref="userService">  
  46.             <password-encoder hash="md5" />  
  47.         </authentication-provider>  
  48.     </authentication-manager>  
  49.   
  50.   
  51.   
  52.   
  53.   
  54.     <beans:bean id="userService" class="web.security.CP_UserDetailsService" />  
  55.   
  56.     <beans:bean id="accessDecisionManager"  
  57.         class="org.springframework.security.access.vote.AffirmativeBased">  
  58.         <beans:property name="decisionVoters">  
  59.             <beans:list>  
  60.                 <beans:bean class="org.springframework.security.access.vote.RoleVoter" />  
  61.                 <beans:bean  
  62.                     class="org.springframework.security.access.vote.AuthenticatedVoter" />  
  63.                 <beans:ref bean="expressionVoter" />  
  64.             </beans:list>  
  65.         </beans:property>  
  66.     </beans:bean>  

SpringSecurityConfig.java

Java代码   收藏代码
  1. @Configuration  
  2. @EnableWebMvcSecurity  
  3. public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {  
  4.   
  5.     private static final Logger logger = Logger  
  6.             .getLogger(SpringSecurityConfig.class);  
  7.   
  8.     @Override  
  9.     public void configure(WebSecurity web) throws Exception {  
  10.         // 设置不拦截规则  
  11.         web.ignoring().antMatchers("/static/**""/**/*.jsp");  
  12.   
  13.     }  
  14.   
  15.     @Override  
  16.     protected void configure(HttpSecurity http) throws Exception {  
  17.         // 设置拦截规则  
  18.         // 自定义accessDecisionManager访问控制器,并开启表达式语言  
  19.         http.authorizeRequests().accessDecisionManager(accessDecisionManager())  
  20.                 .expressionHandler(webSecurityExpressionHandler())  
  21.                 .antMatchers("/**/*.do*").hasRole("USER")  
  22.                 .antMatchers("/**/*.htm").hasRole("ADMIN").and()  
  23.                 .exceptionHandling().accessDeniedPage("/login");  
  24.   
  25.         // 开启默认登录页面  
  26.         // http.formLogin();  
  27.   
  28.         // 自定义登录页面  
  29.         http.csrf().disable().formLogin().loginPage("/login")  
  30.                 .failureUrl("/login?error=1")  
  31.                 .loginProcessingUrl("/j_spring_security_check")  
  32.                 .usernameParameter("j_username")  
  33.                 .passwordParameter("j_password").permitAll();  
  34.   
  35.         // 自定义注销  
  36.         http.logout().logoutUrl("/logout").logoutSuccessUrl("/login")  
  37.                 .invalidateHttpSession(true);  
  38.   
  39.         // session管理  
  40.         http.sessionManagement().sessionFixation().changeSessionId()  
  41.                 .maximumSessions(1).expiredUrl("/");  
  42.   
  43.         // RemeberMe  
  44.         http.rememberMe().key("webmvc#FD637E6D9C0F1A5A67082AF56CE32485");  
  45.   
  46.     }  
  47.   
  48.     @Override  
  49.     protected void configure(AuthenticationManagerBuilder auth)  
  50.             throws Exception {  
  51.   
  52.         // 自定义UserDetailsService  
  53.         auth.userDetailsService(userDetailsService()).passwordEncoder(  
  54.                 new Md5PasswordEncoder());  
  55.   
  56.     }  
  57.   
  58.     @Bean  
  59.     public CP_UserDetailsService userDetailsService() {  
  60.         logger.info("CP_UserDetailsService");  
  61.         CP_UserDetailsService userDetailsService = new CP_UserDetailsService();  
  62.         return userDetailsService;  
  63.     }  
  64.   
  65.     @Bean  
  66.     public LoggerListener loggerListener() {  
  67.         logger.info("org.springframework.security.authentication.event.LoggerListener");  
  68.         LoggerListener loggerListener = new LoggerListener();  
  69.   
  70.         return loggerListener;  
  71.     }  
  72.   
  73.     @Bean  
  74.     public org.springframework.security.access.event.LoggerListener eventLoggerListener() {  
  75.         logger.info("org.springframework.security.access.event.LoggerListener");  
  76.         org.springframework.security.access.event.LoggerListener eventLoggerListener = new org.springframework.security.access.event.LoggerListener();  
  77.   
  78.         return eventLoggerListener;  
  79.     }  
  80.   
  81.     /* 
  82.      *  
  83.      * 这里可以增加自定义的投票器 
  84.      */  
  85.     @SuppressWarnings("rawtypes")  
  86.     @Bean(name = "accessDecisionManager")  
  87.     public AccessDecisionManager accessDecisionManager() {  
  88.         logger.info("AccessDecisionManager");  
  89.         List<AccessDecisionVoter> decisionVoters = new ArrayList<AccessDecisionVoter>();  
  90.         decisionVoters.add(new RoleVoter());  
  91.         decisionVoters.add(new AuthenticatedVoter());  
  92.         decisionVoters.add(webExpressionVoter());// 启用表达式投票器  
  93.   
  94.         AffirmativeBased accessDecisionManager = new AffirmativeBased(  
  95.                 decisionVoters);  
  96.   
  97.         return accessDecisionManager;  
  98.     }  
  99.   
  100.     /* 
  101.      * 表达式控制器 
  102.      */  
  103.     @Bean(name = "expressionHandler")  
  104.     public DefaultWebSecurityExpressionHandler webSecurityExpressionHandler() {  
  105.         logger.info("DefaultWebSecurityExpressionHandler");  
  106.         DefaultWebSecurityExpressionHandler webSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();  
  107.         return webSecurityExpressionHandler;  
  108.     }  
  109.   
  110.     /* 
  111.      * 表达式投票器 
  112.      */  
  113.     @Bean(name = "expressionVoter")  
  114.     public WebExpressionVoter webExpressionVoter() {  
  115.         logger.info("WebExpressionVoter");  
  116.         WebExpressionVoter webExpressionVoter = new WebExpressionVoter();  
  117.         webExpressionVoter.setExpressionHandler(webSecurityExpressionHandler());  
  118.         return webExpressionVoter;  
  119.     }  
  120.   
  121. }  
WebSecurityConfigurerAdapter详解 本文来详细说下security中的WebSecurityConfigurerAdapter 文章目录概述 概述 阅读详情

相关推荐

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5542

spring security默认访问权限判定源码

AffirmativeBased org.springframework.security.access.vote.AffirmativeBased public class AffirmativeBased extends AbstractAccessDecisionManager { /** * @param authentication 调用方认证信息 * @param object 被调用的收保护的对象(方法) * @param configAttributes 对象相关的访问控制配置

路过君的博客 545

基于PUMA实现DOA估计-附Matlab代码

具体而言,PUMA算法将接收的信号分别在时域和频域上进行处理,并结合平稳合成(SS)和平稳子空间(SSP)方法,以提高估计精度。该算法将传统的基于协方差矩阵的最大似然(ML)和最小二乘(LS)方法扩展到了非均匀线性阵列(ULA)上,并通过对信号分离和DOA估计的优化,达到了高精度和高分辨率的效果。方位角(DOA)估计是信号处理中的一个重要问题,它的目的是确定从多个传感器接收到的信号的方向。本文将介绍如何使用基于PUMA的方位角估计算法来实现DOA估计,并附有相应的Matlab代码实现。

Byte_O_O的博客 476

Spring MVC + Spring Security 4.2.3 完整示例DEMO

Spring MVC + Spring SECURITY 4.2.3 完整示例DEMO------ 网上看到不少Security示例,总是缺少很多的环节,这里提供一个简单且完整的示例指导入门学习Security的同学,与大家共同进步。

u013117191的博客 969

SpringMVC学习(五)——零配置实现SpringMVC

文章目录1、引言2、搭建过程2.1 开发环境搭建2.2 项目搭建2.2.1 首先看`web.xml`配置2.2.2 增加`WebApplicationInitializer`的实现类2.2.3 增加`ApplicationContextConfig`配置类2.2.4 增加`application.properties`配置文件2.2.5 增加`WebSpringMVCServletConfig`配置类2、测试结果 1、引言 从开始使用SpringMVC的那一天我就开始想如何减少SpringMVC配置,如何

u011047968的专栏 1222

Spring Security框架配置运行流程完整分析

Spring Security配置流程剖析

pscool的博客 2928

SpringSecurity WebSecurityConfigurerAdapter类使用

WebSecurityConfigurerAdapter 类是个适配器, 在配置的时候,需要我们自己写个配置类去继承他,然后编写自己所特殊需要的配置 @Configuration @EnableWebSecurity public class WebSecurityConfigextends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Excepti...

zzy7075的专栏 3374

SpringSecurity以Bean方式进行配置(替代继承WebSecurityConfigurerAdapter配置方式)

在新的SpringBoot版本(2.7)中,WebSecurityConfigurerAdapter已经被标记为弃用了,在将来的版本中可能就被移除了,因此通过继承此类来配置就不太适合了,替代方案就是通过定义相关bean的方式来配置

_TMOON_的博客 1508

SpringSecurity-1-WebSecurityConfigurerAdapter抽象类与环境配置

怀念二抱三抱

文天大人 3123

浅谈 SpringSecurity使用方式——WebSecurityConfigurerAdapter的三大方法(二)

上一章节我们简单介绍了SpringSecurity使用方式及自动配置原理,这一节我们会着重阐述SpringSecurity配置,并且会基于配置WebSecurityConfigurerAdapter的三个方法的使用方式及原理向大家介绍 2.4、基于配置WebSecurityConfigurerAdapter 创建 WebSecurityConfig配置类,继承 WebSecurityConfigurerAdapter抽象类,实现 Spring SecurityWeb 场景下的自定义配置。 @Con

小爽帅到拖网速的博客 1万+

松哥手把手带你入门 Spring Security,别再问密码怎么解密了

文章目录1.新建项目2.用户配置2.1 配置文件2.2 配置类2.2.1 为什么要加密2.2.2 加密方案2.2.3 PasswordEncoder2.2.4 配置3.自定义表单登录页3.1 服务端定义3.2 前端定义4.小节 因为之前有小伙伴在松哥群里讨论如何给微人事的密码解密,我看到聊天记录后就惊呆了。 无论如何我也得写一篇文章,带大家入门 Spring Security!当我们在一个项目中引...

江南一点雨的专栏 2万+

Spring Security - 如何修复 WebSecurityConfigurerAdapter 已弃用

抽象类,如下所示:这对于Spring Security版本5.6.5或更早版本,或者Spring Boot版本2.6.8或更早版本很好。的 bean,如下所示:供您参考,下面是将安全配置迁移到基于组件的方法的代码示例。的代码中为 HttpSecurity 指定此身份验证提供程序,如下所示:这就是在具有 Spring 安全性的基于 Spring 的应用程序中删除警告“在这篇简短的文章中,我想分享如何摆脱在带有Spring Security的基于Spring的应用程序中的“,请使用以下代码:并在。

allway2的博客 8288

SPRING SECURITY JAVA配置Web Security

在前一篇,我已经介绍了Spring Security Java配置,也概括的介绍了一下这个项目方方面面。在这篇文章中,我们来看一看一个简单的基于web security配置的例子。之后我们再来作更多的个人定制。 Hello Web Security 在这个部分,我们对一个基于websecurity作一些基本的配置。可以分成四个部分: 更新依赖 – 我们已经在前一篇文章中用Mav

飞鸟 2374

Spring Security之Config模块详解(TODO)

发博词由于软件开发中,要解决的安全的问题非常多且零碎,导致了Spring Security配置项也很多,对于接触不久的人来说,可能本身安全方面的东西平时“工作生活”中就接触比较少,导致在学习Spring Security的过程中,有种剪不断理还乱的感觉。下面我们就通过Spring Security的Config模块的架构,来理清这个关系。Spring Security ConfigurerSpri

来啊 快活啊 2万+

基于注解配置的spring mvc 4 + spring security 4实例与解析

关于spring security 4(以下简称SS) ,我们不能不否认,学习的成本是挺高的。如果光光是复制配置代码而不去理解SS的各个组件的实现原理和功能,那当然还是相当简单的一回事,因为配置的代码就那么几行PS:本人不是大神,写博客只是为了增强记忆和理解,以下的内容都是本人通过大量学习SS官方文档和搜索stack overflow探索得来的观点1.SS究竟主要实现什么功能?SS实现了非常多的功能

selfreeyuan的博客 4542

使用SpringMVC创建Web工程并使用SpringSecurity进行权限控制的详细配置方法

使用SpringMVC框架搭建Web项目工程是目前非常流行的web项目创建方式。同时Spring Security也为我们提供了登录验证和权限控制等内容。在这篇博客中,我们将详细描述如何从0开始配置一个基于SpringMVC框架和SpringSecurity权限控制的网站。

DataLearnerAI 5824

Spring Security-WebSecurityConfigurerAdapter

CROS 英文全称;CORS (Cross-Origin Resource Sharing) 跨原始资源共享,提供对信赖web site的跨域访问权限。

风吹草动的博客 1万+

Spring-securitySpringMvc中的使用

Spring-security是spring中的校验流程,有SpringMVC配置和SpringFlux配置两种模式,关于使用方式,我们在这里说下1、SpirngMVC中的Security配置在SpirngMVC中的Security配置,我们需要有一个类继承WebSecurityConfigurerAdapter类,在里面可以配置自己需要的bean和拦截属性,更多详细介绍请看官方文档,这里只是简单...

lz710117239的博客 5417

SpringSecurity相关配置SpringSecurityConfig

SpringSecurity配置相对来说有些复杂,如果是完整的bean配置,则需要配置大量的bean,所以xml配置时使用了命名空间来简化配置,同样,spring为我们提供了一个抽象类WebSecurityConfigurerAdapter和一个注解@EnableWebMvcSecurity,达到同样减少bean配置的目的,如下: applicationContext-Spri...

413

HiPath_4000_管理员手册

HiPath 4000数字程控交换机技术文档管理员手册

下一篇: jquery Datatable参数及使用方法
codes520
博客等级 码龄9年 2粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值