`
snoopy7713
  • 浏览: 1127092 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

spring-security3 进级篇I

阅读更多

在上一篇入门中,简单介绍了spring security3的用法,但现实中,登录页面都是用户自己定义的,而不是spring security3生产的,这个时候,我们可以自定义用户登录页面。通过分析spring security3生成的登录页面,我们可以看到,它是一个表单,表单的action,userName 和 password的name分别为 j_spring_security_check, j_username,j_password。

 

(1)针对这个情况,我们自定义登录页面login.jsp,内容如下:

 

 

Html代码  收藏代码
  1. < %@ page  language = "java"   contentType = "text/html; charset=UTF-8"   
  2.     pageEncoding = "UTF-8" % >   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
  4. < html >   
  5. < head >   
  6. < meta   http-equiv = "Content-Type"   content = "text/html; charset=UTF-8" >   
  7. < title > login interface </ title >   
  8. </ head >   
  9. < body >   
  10.     < h3 > user login </ h3 >   
  11.     ${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}  
  12.     < form   action = "${pageContext.request.contextPath}/j_spring_security_check"   method = "post" >   
  13.         userName:< input   type = "text"   name = "j_username" /> < br />   
  14.         password:< input   type = "password"   name = "j_password" /> < br />   
  15.         < input   type = "submit"   value = "登录" >   
  16.     </ form >   
  17. </ body >   
  18. </ html >   

 

 其 中,${sessionScope.SPRING_SECURITY_LAST_EXCEPTION.message}为spring security框架自带的信息,通过配置国际化文件,实现信息的提示,展开spring security core 可以看到国际化的文件,用户可以修改其内容满足自己项目的需要,也可自定义自己的国际化文件,将spring security core 中的key-value中的value进行修改,如果采用spring自带的国际化文件,请在配置文件中写入如下的配置信息:

 

 

 

Xml代码  收藏代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < beans   xmlns = "http://www.springframework.org/schema/beans"   
  3.     xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   xmlns:aop = "http://www.springframework.org/schema/aop"   
  4.     xmlns:tx = "http://www.springframework.org/schema/tx"   xmlns:context = "http://www.springframework.org/schema/context"   
  5.     xmlns:jee = "http://www.springframework.org/schema/jee"   
  6.     xsi:schemaLocation ="  
  7.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd  
  8.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  9.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd  
  10.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd  
  11.     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">   
  12.       
  13.     <!--****************************************************************************************-->   
  14.     <!--**********************国际化支持信息配置*************************************************-->   
  15.     <!--****************************************************************************************-->   
  16.     <!-- 国际化支持 -->   
  17.     <!-- Bean id 必须是“messageSource”,因为Spring 在装配系统Bean 时会根据这个名字进行查找-->   
  18.     < bean   id = "messageSource"   class = "org.springframework.context.support.ResourceBundleMessageSource" >       
  19.        < property   name = "basename"   value = "org.springframework.security.messages" />   
  20.      </ bean >    
  21. </ beans >   

 

 

(2)修改spring-security配置文件满足自定义方式

 

Java代码  收藏代码
  1. <?xml version= "1.0"  encoding= "UTF-8" ?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"   
  3.   xmlns:security="http://www.springframework.org/schema/security"   
  4.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.   xsi:schemaLocation="http://www.springframework.org/schema/beans   
  6.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
  7.           http://www.springframework.org/schema/security   
  8.           http://www.springframework.org/schema/security/spring-security-3.1.xsd">   
  9.             
  10.     <!--对登录页面不进行拦截,在页面后面加*表示,该页面后面可能会带一些参数-->  
  11.     <security:http pattern="/login.jsp*"  security= "none" />  
  12.               
  13.     <!-- 保护应用程序的所有URL,只有拥有ROLE_USER才可以访问 -->  
  14.     <security:http auto-config="true" >  
  15.         <!-- login-page: 指定登录页面-->  
  16.         <security:form-login login-page="/login.jsp" />  
  17.         <security:intercept-url pattern="/**"  access= "ROLE_USER"  />  
  18.     </security:http>  
  19.       
  20.     <!--配置认证管理器,只有用户名为user,密码为opal的用户,角色为ROLE_USER可访问指定的资源 -->  
  21.     <security:authentication-manager>  
  22.         <security:authentication-provider>  
  23.                 <security:user-service>  
  24.                 <security:user name="user"   password= "opal"  authorities= "ROLE_USER" />  
  25.             </security:user-service>  
  26.         </security:authentication-provider>  
  27.     </security:authentication-manager>  
  28. </beans>  

 

 

(3)运行该程序,系统自动跳到用户自定义的界面,输错代码,点击登录,错误信息提示如下:



 (4)用户可以对密码进行加密,例如采用MD5的方式,假设用户密码为opal,其加密后为

22b5c9accc6e1ba628cedc63a72d57f8

 

 

 

此时,配置文件中的配置修改如下:

 

 

 

Xml代码  收藏代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < beans   xmlns = "http://www.springframework.org/schema/beans"   
  3.   xmlns:security = "http://www.springframework.org/schema/security"   
  4.   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"   
  5.   xsi:schemaLocation ="http://www.springframework.org/schema/beans  
  6.           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  7.           http://www.springframework.org/schema/security  
  8.           http://www.springframework.org/schema/security/spring-security-3.1.xsd">   
  9.             
  10.     <!--对登录页面不进行拦截,在页面后面加*表示,该页面后面可能会带一些参数-->   
  11.     < security:http   pattern = "/login.jsp*"   security = "none" />   
  12.               
  13.     <!-- 保护应用程序的所有URL,只有拥有ROLE_USER才可以访问 -->   
  14.     < security:http   auto-config = "true" >   
  15.         <!-- login-page: 指定登录页面-->   
  16.         < security:form-login   login-page = "/login.jsp" />   
  17.         < security:intercept-url   pattern = "/**"   access = "ROLE_USER"   />   
  18.     </ security:http >   
  19.       
  20.     <!--配置认证管理器,只有用户名为user,密码为opal的用户,角色为ROLE_USER可访问指定的资源 -->   
  21.     < security:authentication-manager >   
  22.         < security:authentication-provider >   
  23.             < security:password-encoder   hash = "md5" />   
  24.             < security:user-service >   
  25.                 < security:user   name = "user"    password = "22b5c9accc6e1ba628cedc63a72d57f8"   authorities = "ROLE_USER" />   
  26.             </ security:user-service >   
  27.         </ security:authentication-provider >   
  28.     </ security:authentication-manager >   
  29. </ beans >  
分享到:
评论

相关推荐

    spring security进级篇 V 自定义标签控制显示

    NULL 博文链接:https://gaojiewyh.iteye.com/blog/1501470

    SpringCloud视频教程全套百度网盘

    第4章 SpringSecurity安全详细讲解及应用 第5章 RabbitMQ高级消息的讲解及应用 第6章 ElasticSearch详细讲解及应用 第7章 Eureka分布式服务器的搭建 。。。。。。。。。 第15章 SpringCloud项目实战 。。。。。。。...

    128元尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇

    着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),安全(整合SpringSecurity),分布式...

    spring-boot-demo:Spring Boot和Spring Cloud和Spring Security演示案例(Spring学习示例实战项目)

    SpringBoot + SpringCloud + SpringSecurity学习过程中的二进制汇总,沉淀记录下学习历程 1.知识点图谱 所有博文集中发布在个人博客网站: 大致规划的内容包括以下章节,希望能用半年到一年(严重超期)的时间完成....

    SpringBoot整合Spring Security.docx

    Spring Security是一个功能强大且高度可定制的身份验证和...这篇文章就是想通过一个小案例将Spring Security整合到SpringBoot中去。要实现的功能就是在认证服务器上登录,然后获取Token,再访问资源服务器中的资源。

    springCloud

    Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud0 CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring ...

    Java架构师之路系列教程

    3.高级篇-单点登录,Groovy视频,性能优化,Maven,Mongodb,Redis,Spring Security,Spring 源码,JVM,微信,银行接口等 4.架构篇-Linux视频,Nginx视频,京东海量订单处理视频,大型电商分布式实践,架构实战等 ...

    尚硅谷Java视频教程_Spring Boot视频教程(下)整合篇

    着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),安全(整合SpringSecurity),...

    X-SpringBoot:X-SpringBoot是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】

    上载lombok大量简化了代码上一篇MyBatis Plus大量简化了SQL约会hutool工具包规范工具类♡minio分布式文件系统前一级完全脱离,前端代码可单独部署自定义Spring Security支持获取令牌账号密码:admin / admin版本

    WebService CXF学习文档

    做开发时,查了大量资料,发现一比较全面的资料,分享一下! WebService CXF学习——入门篇 1.CXF由来 2.HelloWorld 3.WSDL描述 WebService CXF学习——进阶篇 ... 3.WS-Security WebService CXF学习——JAXB剖析

    尚硅谷SpringBoot视频全套(核心技术篇+整合篇)

    着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),安全(整合SpringSecurity),分布式...

    IDEA开发工具下Spring Boot视频教程(下)整合篇

    着重介绍SpringBoot的与各大场景的整合使用,内容包括:缓存(整合Redis),消息中间件(整合RabbitMQ),检索(整合ElasticSearch),任务(异步任务,定时任务,邮件任务),安全(整合SpringSecurity),...

    java面试题及技巧3

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    asp.net知识库

    如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] ...

    java面试题以及技巧

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题目与技巧1

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题及技巧4

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题以及技巧6

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

Global site tag (gtag.js) - Google Analytics