Spring+Spring Security+Maven 實現的一個Hello World例子

Spring Security容許開發人員輕鬆地將安全功能集成到J2EE Web應用程序中,它經過Servlet過濾器實現「用戶自定義」安全檢查。 html

在本教程中,咱們將向您展現如何在Spring MVC中集成Spring Security 3.0並安全訪問。在集成成功後,當咱們查看頁面的內容時用戶須要先輸入正確的「用戶名」和「密碼」。 java

本教程的開發環境爲: web

1.Spring 3.0.5.RELEASE spring

2.Spring Security 3.0.5.RELEASE 安全

3.Eclipse 3.6 mvc

4.JDK 1.6 app

5.Maven 3 jsp

注意:Spring Security 3.0 至少須要java 5.0或更高的運行環境。 ide

1.目錄結構 ui

本教程的最終目錄以下所示:

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=140107223703

更多IT文章,請訪問http://www.it161.com/

相關文章
相關標籤/搜索