文档章节

Spring+Spring Security+JSTL实现的表单登陆的例子

爱吃猫的小萌鱼
 爱吃猫的小萌鱼
发布于 2014/01/11 11:14
字数 1120
阅读 118
收藏 1

Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中,它通过Servlet过滤器实现“用户自定义”安全检查。

在本教程中,我们将向您展示如何在Spring MVC中集成Spring Security 3.0并安全访问。在集成成功后,当我们查看页面的内容时用户需要先输入正确的“用户名”和“密码”。

本教程的开发环境为:

1.Spring 3.0.5.RELEASE

2.Spring Security 3.0.5.RELEASE

3.Eclipse 3.6

4.JDK 1.6

5.Maven 3

注意:Spring Security 3.0 至少需要java 5.0或更高的运行环境。

1.目录结构

本教程的最终目录如下所示:

2.Spring Security依赖关系

为了正常运行 Spring security 3.0, 你需要加入 “spring-security-core.jar“, “spring-security-web.jar” and “spring-security-config.jar“. 在Maven库中你需要加入Spring配置库

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<properties>
        <spring.version>3.0.5.RELEASE</spring.version>
    </properties>
  
    <dependencies>
  
        <!-- Spring 3 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <!-- Spring Security -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>${spring.version}</version>
        </dependency>
  
    </dependencies>
  
</project>

3.Spring MVC Web应用程序

本教程是一个简单的Spring MVC 应用程序,即访问“/welcome”跳转到“hello.jsp”页面,稍后用Spring Security安全访问这个链接。

HelloController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.mkyong.common.controller;
  
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
  
@Controller
@RequestMapping("/welcome")
public class HelloController {
  
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model) {
  
        model.addAttribute("message", "Spring Security Hello World");
        return "hello";
  
    }
  
}

hello.jsp

1
2
3
4
5
<html>
<body>
    <h1>Message : ${message}</h1>
</body>
</html>

mvc-dispatcher-servlet.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    xsi:schemaLocation="
  
    <context:component-scan base-package="com.mkyong.common.controller" />
  
    <bean
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix">
        <value>/WEB-INF/pages/</value>
      </property>
      <property name="suffix">
        <value>.jsp</value>
      </property>
    </bean>
  
</beans>

4.Spring Secuity:用户验证

创建一个单独的Spring配置文件去定义Spring Security相关的东西。它要实现的是:只有用户输入了正确的用户名“mkyong”和密码“123456”才可以访问“/welcome” 。

下面的Spring配置文件你应该明白是什么意思。

spring-security.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    xsi:schemaLocation=" http://www.springframework.org/schema/beans
  
    <http auto-config="true">
        <intercept-url pattern="/welcome*" access="ROLE_USER" />
    </http>
  
    <authentication-manager>
      <authentication-provider>
        <user-service>
        <user name="mkyong" password="123456" authorities="ROLE_USER" />
        </user-service>
      </authentication-provider>
    </authentication-manager>
  
</beans:beans>

5.整合Spring Security

想要在Web应用程序中整合Spring Security,只需加入“DelegatingFilterProxy”作为Servlet过滤器拦截到来的请求即可。

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<web-app id="WebApp_ID" version="2.4"
    xmlns=" http://java.sun.com/xml/ns/j2ee
    xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee 
  
    <display-name>Spring MVC Application</display-name>
  
    <!-- Spring MVC -->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
                    org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  
    <listener>
        <listener-class>
                  org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>
  
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/mvc-dispatcher-servlet.xml,
            /WEB-INF/spring-security.xml
        </param-value>
    </context-param>
  
    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>
                  org.springframework.web.filter.DelegatingFilterProxy
                </filter-class>
    </filter>
  
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  
</web-app>

6.Demo

就是以上这些配置了,登陆页面在哪儿呢?不要着急,如果你不知道怎么创建登陆页面,我们将会创建一个简单的登陆页面去验证。

(登陆验证页面请访问:Spring Security实现的表单登陆的例子

当我们访问“http://localhost:8080/SpringMVC/welcome”时,Spring Security 将会自动拦截到“http://localhost:8080/SpringMVC/spring_security_login”登陆页面验证身份。

http://localhost:8080/SpringMVC/spring_security_login页面如下所示:

如果输错了用户名和密码则页面会显示错误的消息,如下所示:

http://localhost:8080/SpringMVC/spring_security_login?login_error

如果我们输对了用户名和密码,Spring Security则会跳转到欢迎页面,如下所示:

http://localhost:8080/SpringMVC/welcome

本文为原创文章,转载请注明链接地址,首发于http://www.it161.com/article/javaDetail?articleid=140107232125,

更多IT文章,请访问http://www.it161.com/

© 著作权归作者所有

爱吃猫的小萌鱼
粉丝 1
博文 16
码字总数 10296
作品 0
东城
私信 提问
Spring+Spring Security+Maven 实现的一个Hello World例子

Spring Security允许开发人员轻松地将安全功能集成到J2EE Web应用程序中,它通过Servlet过滤器实现“用户自定义”安全检查。 在本教程中,我们将向您展示如何在Spring MVC中集成Spring Secu...

爱吃猫的小萌鱼
2014/01/11
0
0
Spring Security教程之Spring Security实现访问控制

在Spring Security中,实现访问控制或权限控制是非常容易实现的,请看下面的代码片段: 它的意思是,只有“ROLE_ADMIN”权限的用户可以允许访问“ /admin*”路径,如果没有权限的用户访问则会...

爱吃猫的小萌鱼
2014/01/23
0
0
121 基于MVC框架下的网上书店系统 001 项目展望

要完成的功能   之前写的在线书店,其实是我用20天写出来的,完成的功能只有个人中心、下单、用户管理等简单的功能此次重启这个项目会尽量模仿当当在线书店,界面可能不会做的那么好看,但...

小代码2016
2016/09/08
66
2
HttpClient做网页爬虫遇到的问题!!!

我的目的是,使用HttpClient解析人人网,先实现登陆,然后在实现发状态。 解析登陆时,我找到了人人网的登陆界面,查看源码,发现带有账号和密码的那个表单提交的地址是http://www.renren.c...

张森
2012/03/17
1K
5
AngularJS 应用身份认证的技巧

身份认证 最普遍的身份认证方式就是用用户名(或 email)和密码做登陆操作。这就意味要实现一个登陆的表单,以便用户能够用他们个人信息登陆。这个表单看起来是这样的: 既然这个是 Angular-...

王春-海子
2016/05/18
122
0

没有更多内容

加载失败,请刷新页面

加载更多

Audio 和 Video的简单介绍

HTML多媒体 , 主要分为Audio 音频和 Video 视频。 1:Audio 基本语法 src 指定当前播放的音频文件,controls播放控制器,loop歌曲循环,autoplay自动播放 (chrome66之后被禁止)主流浏览器已...

凌兮洛
34分钟前
4
0
【iText5 生成PDF】纯Java代码实现生成PDF(自定义表格、文本水印、单元格样式)

工作中遇到需要生成PDF。最终选择了iText。其他也有通过html再生成。感觉不太适合就用了代码实现。 使用iText 5.5.13.1版本。纯Java代码实现 1.自定义表格合并指定行列完成数据填充 2.自定义...

小帅帅丶
36分钟前
10
0
Redis HyperLogLog

关于 Redis HyperLogLog 在说明 HyperLogLog 之前,我们需要先了解一个概念:基数统计。维基百科中的解释是: cardinality of a set is a measure of the “number of elements“ of the set...

xiaomin0322
36分钟前
2
0
【JAVA】如何利用TODO任务标签高效管理代办代码

日常协同开发中,模块分配顺序、开发效率不一致的情况下会出现某一模块开发时需要调用其他开发人员所写模块未准备或者不清晰,代码搁置的情况下为了方便下次解决搁置代码、未完成项查找,常用...

ZhangLG
37分钟前
5
0
信必优成功案例 –艾默生SiteWeb监控系统

项目背景 SiteWeb监控系统是艾默生开发的第三代集中监控平台,为电信、数据中心、电力、银行、证券和铁路等领域提供一体化监控解决方案。 服务范围 •SiteWeb监控平台全面兼容在网运营的PSM...

symbiochina88
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部