spring security4 之 简单配置

spring security4 与 spring security3还是有一些区别的,目前这方面的资料很少,只能自己摸索,总结一些经验,记录下来

spring security4 取消了很多的setter注入方式,换成了构造器注入,其实在security3里有很多已经被@Deprecated,在security4里索性直接给删掉了

http节点中user-expressions属性security3默认是false,security4默认是true,

access-denied-page这个属性在security4中被删掉了,所以配置可以写成这样

<security:http use-expressions="false">

。。。。

<security:access-denied-handler error-page="/error"/>

。。。。

</security:http>

auto-config="true"配置这个属性会实现一个简单的验证,但是官方并不推荐这样做,配置如下

<security:http auto-config="true" use-expressions="false">

<security:intercept-url pattern="/login.html"  access="IS_AUTHENTICATED_ANONYMOUSLY" />

<security:intercept-url pattern="/resources/**"   access="IS_AUTHENTICATED_ANONYMOUSLY" />

<security:intercept-url pattern="/"   access="IS_AUTHENTICATED_ANONYMOUSLY" />

<security:intercept-url pattern="/**" access="ROLE_USER" />

<security:access-denied-handler error-page="/error"/>

<security:logout logout-success-url="/" />

<security:form-login login-page="/login.html" default-target-url="/" authentication-failure-url="/login.html?error=1" always-use-default-target="true" />

</security:http>

再配置一个验证器

<security:authentication-manager>

<security:authentication-provider ref="authenticationProvider"/>

</security:authentication-manager>

<bean id="authenticationProvider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">

<property name="hideUserNotFoundExceptions" value="false" />

<property name="userDetailsService" ref="userDetailsServiceImpl" />

<property name="passwordEncoder" ref="passwordEncoder" />

<property name="saltSource" ref="saltSource" />

</bean>

<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />

<bean id="saltSource" class="org.springframework.security.authentication.dao.ReflectionSaltSource">

<property name="userPropertyToUse" value="username"/>

</bean>

这里用的是MD5加盐值的验证方式,内部的加密格式是: MD5(password{usernam}),如果不想用默认的加密格式可以覆写Md5PasswordEncoder这个类的这个mergePasswordAndSalt方法

public class Md5PasswordEncoder extends org.springframework.security.authentication.encoding.Md5PasswordEncoder {

protected String mergePasswordAndSalt(String password, Object salt, boolean strict) {

if(password == null) {

password = "";

}

if(strict && salt != null && (salt.toString().lastIndexOf("{") != -1 || salt.toString().lastIndexOf("}") != -1)) {

throw new IllegalArgumentException("Cannot use { or } in salt.toString()");

} else {

return salt != null && !"".equals(salt) ? MD5.getMD5ofStr(password).toUpperCase() +  salt.toString() :password;

}

}

}

时间: 2024-11-09 10:23:20

spring security4 之 简单配置的相关文章

【spring】从简单配置使用到深入

一.使用前的配置 1.maven引入需要的jar包 <properties> <spring.version>4.1.6.RELEASE</spring.version> </properties> <!--Spring 系列--> <dependencies> <!--Spring 核心jar包--> <dependency> <groupId>org.springframework</gr

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbidden"). 从第3步,我们可以知道

spring security4.2.2的maven配置+spring-security配置详解+java源码+数据库设计

最近项目需要添加权限拦截,经讨论决定采用spring security4.2.2!废话少说直接上干货! 若有不正之处,请谅解和批评指正,不胜感激!!!!! spring security 4.2.2文档:http://docs.spring.io/spring-security/site/docs/4.2.2.RELEASE/reference/htmlsingle/#el-access-web spring security 3 中文2文档:http://www.mossle.com/docs

spring注解开发中常用注解以及简单配置

一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向spring容器中注入bean对象, 然而,通过注解编程可以缩短我们开发的时间,简化程序员的代码编写. 2.如何开启注解开发:最常用的方法是使用<mvc:annotation-driven/>来开启注解编程(用一个标签配置了spring注解编程的映射器和适配器,同时配置了许多的参数) 3.如何将有注解的be

springMVC+spring+MyBatis(SSM)的简单配置

SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中: Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. SpringMVC分离了模型对象(Model).视图(View).控制器(Controller),这种分离让它们更容易进行定制. MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架. 今天,就带领大家见证基础,进行

spring boot admin 集成的简单配置随笔

和我并肩作战的同事也要相继离职了,心里还是有很多不舍得,现在业务也陆陆续续落在了肩头,上午项目经理让我把spring boot admin集成到现在的项目中,已遍后续的监控. 哇!我哪里搞过这个!心里好慌,好在我面向对象虽然不是很精通,但是面向百度我倒是很拿手,于是开启了,面向百度编程,现在已经成功过了~写个博客继续一下,方便以后使用以及分享. 注:此写法适用于 2.0以下版本 高于2.0请直接官方文档走起:http://codecentric.github.io/spring-boot-adm

简单的Spring Boot 项目初级配置

一.前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 本系列以快速入门为主,可当作工具小手册阅读 二.环境搭建 创建一个 maven 工程,目录结构如下图: 2.1 添加依赖 创建 maven 工程,在 pom.xml 文件中添加如下依赖: <!-- 定义公共资源版本 --> <parent> <groupId&g

java计划任务调度框架quartz结合spring实现调度的配置实例代码分享

点击链接加入群[JavaEE(SSH+IntelliJIDE+Maven)]:http://jq.qq.com/?_wv=1027&k=L2rbHv 一:quartz简介 OpenSymphony 的Quartz提供了一个比较完美的任务调度解决方案. Quartz 是个开源的作业调度框架,定时调度器,为在 Java 应用程序中进行作业调度提供了简单却强大的机制. Quartz中有两个基本概念:作业和触发器.作业是能够调度的可执行任务,触发器提供了对作业的调度 二:quartz spring配置详

spring声明式事务配置详解

spring声明式事务配置详解 君子不器 2013年06月16日 编程世界 5273次阅读 查看评论 理解Spring的声明式事务管理实现 本节的目的是消除与使用声明式事务管理有关的神秘性.简单点儿总是好的,这份参考文档只是告诉你给你的类加上@Transactional注解,在配置文件中添加('<tx:annotation-driven/>')行,然后期望你理解整个过程是怎么工作的.此节讲述Spring的声明式事务管理内部的工作机制,以帮助你在面对事务相关的问题时不至于误入迷途,回朔到上游平静