springsecurity4.2入门完整实例

6 篇文章 1 订阅

1、构建maven项目,引入springsecurity相关依赖。

项目结构如下:

pom.xml配置文件主要部分:

<properties>
         <spring.version>4.2.0.RELEASE</spring.version>
  </properties>
  <dependencies>
         <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
         </dependency>
         <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-context</artifactId>
              <version>${spring.version}</version>
         </dependency>
         <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-webmvc</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>
         <dependency>
             <groupId>jstl</groupId>
             <artifactId>jstl</artifactId>
             <version>1.2</version>
         </dependency>
  </dependencies>

2、配置web.xml。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
   <display-name>springsecurity</display-name>
    <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:spring-security.xml</param-value>
    </context-param>
    <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                    <param-name>contextConfigLocation</param-name>
                    <param-value>classpath:spring-mvc.xml</param-value>
             </init-param>
             <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
              <servlet-name>springmvc</servlet-name>
              <url-pattern>/</url-pattern>
     </servlet-mapping>              
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <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>
     <welcome-file-list>
           <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
</web-app>

3、书写AdminController.java类。

package com.xxx.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class AdminController {
    
         @RequestMapping(value= {"/","/welcome**"},method=RequestMethod.GET)
         public ModelAndView welcome() {
             ModelAndView welcome = new ModelAndView();
             welcome.addObject("title","welcome");
             welcome.addObject("message","this is a security page");
             welcome.setViewName("hello");
             return welcome;
         }
         
         @RequestMapping(value="/admin**",method=RequestMethod.GET)
         public ModelAndView admin() {
             ModelAndView welcome = new ModelAndView();
             welcome.addObject("title","admin");
             welcome.addObject("message","this is a admin page");
             welcome.setViewName("admin");
             return welcome;
         }
}

4、配置spring-mvc.xml。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.2.xsd">

         <context:component-scan base-package="com.xxx.*"/>
         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" >
                           <value>/WEB-INF/views/</value>
                </property>
                <property name="suffix">
                           <value>.jsp</value>
                </property>
         </bean>
</beans>

5、配置spring-security.xml。

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/security 
	http://www.springframework.org/schema/security/spring-security-4.2.xsd
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">
		<http auto-config="true">
		       <intercept-url pattern="/admin**" access="hasRole('ROLE_USER')"/>
		</http>
       <authentication-manager>
              <authentication-provider>
                   <user-service>                  
	                   <user name="admin" password="123456" authorities="ROLE_USER"/>
                   </user-service>
              </authentication-provider>
       </authentication-manager>
</beans:beans>

<intercept-url pattern="/admin**" access="hasRole('ROLE_USER')"/>这句配置中,4.0以后版本都使用hasRole('ROLE_USER')取代原来的ROLE_USER。

6、准备页面。

admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@page session="true" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>hello</title>
	</head>
	<body>
	         <h2>title:${title }</h2>
	         <h2>message:${message }</h2>
	         <c:if test="${pageContext.request.userPrincipal.name != null  }">
	               <h2>welcome you ,${pageContext.request.userPrincipal.name }! |
                   <a href="<c:url value='/j_spring_security_logout'/>">Logout</a></h2>
	         </c:if>
	</body>
</html>

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>hello</title>
	</head>
	<body>
	         <h2>title:${title }</h2>
	         <h2>message:${message }</h2>
	</body>
</html>

这里并没有登录页面,我们会使用springsecurity给我们提供的默认的登录页面,这个登录页面可以自定义。

7、启动tomcat,访问项目http://localhost:8080/springsecurity/admin

直接访问首页,或者欢迎页,不会提示登录。直接进入页面。

欢迎页和admin.jsp在同一个目录下

初次访问http://localhost:8080/springsecurity/admin提示登录,这是springsecurity为我们提供的默认的登录页面

用户名或者密码错误,登录失败

登录成功,跳转欢迎页面

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要配置 Spring Security 4.2,需要创建一个名为 "spring-security.xml" 的配置文件,并将其放置在 src/main/resources 目录下。下面是一个基本的示例配置文件: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd"> <security:http auto-config="true"> <security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" /> <security:intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <security:form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/login?error" /> <security:logout logout-success-url="/login?logout" /> </security:http> <security:authentication-manager> <security:authentication-provider> <security:user-service> <security:user name="user" password="password" authorities="ROLE_USER" /> <security:user name="admin" password="password" authorities="ROLE_ADMIN" /> </security:user-service> </security:authentication-provider> </security:authentication-manager> </beans> ``` 在上面的配置中,我们定义了一个基本的安全配置。我们定义了一个 HTTP 安全配置,其中包含了拦截 URL 的规则、表单登录页面和注销功能的 URL。我们还定义了一个身份验证管理器和一个身份验证提供程序,其中包含了两个用户的用户名、密码和权限信息。 请注意,这只是一个基本的示例配置文件,您需要根据您的应用程序需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luffy5459

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值