springsecurity4.2入门完整实例

2023-05-16

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为我们提供的默认的登录页面

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

登录成功,跳转欢迎页面

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springsecurity4.2入门完整实例 的相关文章

  • redhat7通过yum安装mysql5.7.17

    rhel centos系列linux操作系统自身没有mysql的源 xff0c 需要自行下载安装 本文介绍如何安装mysql5 7 x数据库 第一步 xff1a 下载源 root span class hljs variable 64 cl
  • mysql主从复制环境搭建

    所需服务器 xff1a 两台 centos7 linux虚拟机 服务器分配 server 192 168 56 201 client 192 168 56 202 说明 xff1a 使用server做主库服务器client做从库服务器 第一
  • hadoop2.6.0伪分布式环境搭建

    Hadoop作为分布式大数据处理框架在数据处理应用中有广泛的应用 xff0c 本文介绍在Linux环境下搭建hadoop伪分布式集群 xff0c 记录下自己的学习过程 一 虚拟机准备 xff0c 为了减少折腾 xff0c 不建议在windo
  • ubuntu1404单机安装部署openstack-juno

    Redhat上可以很快的使用All in one的方式安装openstack xff0c 先安装packstack 然后通过packstack allinone这条命令 就可以一步安装openstack 最后设置IP和网桥 xff0c 就可
  • ubuntu上利用qemu-kvm创建虚拟机

    kvm是Kernel based Virtual Machine的缩写 xff0c 即基于内核的虚拟机技术 xff0c 运行在具备Intel vt或者AMD V功能的x86平台上 在linux2 6 20之后的版本中kvm成为了linux内
  • Fatal error in launcher: Unable to create process using解决办法

    我的机器是windows7 64位机器 xff0c 本来默认安装了pip命令是9 0 1版本的 xff0c 网上有介绍说可以安装1 5 6版本 我考虑将pip更改为1 5 6版本 xff0c 去官网下载一个whl的文件 xff0c 利用pi
  • openstack-install-ubuntu-single说明

    ubuntu1404单机安装部署openstack juno值得注意的地方 xff0c 这里说明一下 先来说说openstack组件 keystone gt 认证组件glance gt 镜像组件 xff0c 负责管理虚拟机镜像nova gt
  • hive自定义函数UDF

    Hive自定义函数 UDF xff0c 可以帮助用户轻松实现在hql语句中展现自定义查询结果 这里以一个简单的连接函数来实现用户自定义函数 xff0c 假设表结构如下 xff1a 表中只有两个简单的字段 xff0c id和name 这里实现
  • Oracle 数据误删的恢复措施

    Oracle中 常见的数据删除操作就三种 xff0c truncate xff0c drop xff0c delete xff0c 下面分类说一下如何恢复 Truncate xff1a 该操作执行后 xff0c 保留表结构 xff0c 清空
  • Hive使用入门

    先介绍一些基本的命令 xff1a 1 进入hive命令行 xff0c 这种方式进入之后 xff0c 操作结果展示时带有执行mapreduce的调试信息 xff1b hive service cli 等同于直接输入hive 2 进入hive命
  • Hive内部表和外部表的区别

    hive作为基于hdfs的数据仓库 xff0c 在构建表的时候 xff0c 会有内部表和外部表 xff0c 这里介绍两者的异同点 相同点 xff1a 1 他们都是用mysql或者derby作为元数据存储 xff0c 他们在元数据的组织上是相
  • hive:For direct MetaStore DB connections, we don't support retries at the client level

    hive创建表和导入数据都没有问题 xff0c 在删除表 xff0c 做drop table 时报如题所示的错误 有的文章说修改元数据库字符集为latin1 但是元数据库字符集默认创建就是latin1 修改字符集无法解决该问题 通过更换my
  • rhel7安装docker

    docker是当下最流行的虚拟化容器技术之一 xff0c 它是基于lxc的一种容器技术 xff0c 该技术已经非常成熟 xff0c 而且在实际应用中已经越来越普遍 很多框架都有对docker的支持 xff0c 包括hadoop spark
  • Openstack使用ubuntu镜像启动虚拟机实例

    一般情况下openstack环境搭建好了之后 xff0c 就是测试启动虚拟机 通常我们会使用一个最基本的镜像cirros 0 3 3 x86 64 disk img来作为镜 像 xff0c 使用glance命令行或者horizon的图形化界
  • docker使用Dockerfile构建镜像

    docker获取镜像 xff0c 除了docker pull docker load之外还可以通过自定义Dockerfile的方式通过命令docker build 来构建新镜像 通过这种方式可以很自由的定义想要安装的镜像 xff0c 想要安
  • django环境搭建

    django是python开发框架 xff0c 是一个丰富的web框架 第一步 xff1a 安装pip wget https bootstrap pypa io get pip py python get pip py 第二步 xff1a
  • docker配置国内仓库镜像registry-mirror

    Docker在默认安装之后 xff0c 当需要下载镜像时 xff0c 通过命令docker pull learn tutoral拉取示例镜像 xff0c 或者其他镜像时 xff0c 都是访问默认的docker hub上的镜像 xff0c 在
  • TypeError: object() takes no parameters

    python面向对象编程第一个坑 TypeError object takes no parameters 出现这个错误 xff0c 一般就是构造函数 init 书写的不对 xff0c 检查一下是否是少了一个下划线或者是少写了一个i字母 x
  • windows上Flask环境搭建

    Flask是python开发框架 用来快速构建web项目 下面介绍如何在windows上搭建flask开发环境并运行一个demo 第一步 创建项目并构建flask环境 mkdir flaskapp cd flaskapp virtualen
  • WebSocket 测试工具

    一 WebSocket 简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单 xff0c 允许服务端主动向客户端推送数据 在WebSocket API中 xff

随机推荐

  • 利用pipework为docker容器设置固定IP

    今天介绍如何在redhat centos7系列机器上使用pipework为docker启动的容器指定一个固定ip 我们知道默认情况下 xff0c docker会使用bridge网络模式为每一个启动的容器动态分配一个IP xff0c 以172
  • 用docker玩坏ubuntu虚拟机容器

    当我们装上docker之后 xff0c 自然会pull一个或多个镜像玩玩 xff0c 这时候 xff0c docker hub仓库上有很多系列操作系统镜像 xff0c 每个系列又有很多不同功能的虚拟机镜像 xff0c 比如centos分6还
  • tornado入门实例

    tornado是python web开发的又一个轻量级框架 tornado框架需要安装 xff0c 为了方便 xff0c 我直接安装了Anaconda 2 4 1 里面直接就带了tornado 还有很多python库 numpy scipy
  • web.py框架入门

    web py是python web开发的一个轻量级框架 web py可以通过pip命令安装 xff0c pip install web py 编写官网示例代码 xff1a vi index py import web urls 61 34
  • graphviz快速上手

    graphviz最初是AT amp T实验室用来画流程图的工具 xff0c 使用dot语言 其中根据图的类型可以分为有向图 dirgraph 和无向图 graph 我们知道图是由点 node 和边 edge 组成的 xff0c 在有向图中边
  • mysqld: File './mysql-bin.index' not found (Errcode: 13 - Permission denied)

    我们通过yum方式安装mysql 会生成mysql mysql用户组和用户 xff0c 启动mysql默认是使用mysql用户 如果我们开启了慢log日志 xff0c 而且我们使用service mysqld start启动mysql 会报
  • redhat7编译安装php-5.5.38

    1 从官网下载php源码包 php 5 5 38 2 安装依赖包 yum install libxml2 libxml2 devel bzip2 devel libcurl devel y yum install openssl opens
  • spark-1.6.0源码编译安装

    环境准备 spark是scala语言写的 xff0c scala运行需要jdk 如果通过maven编译 xff0c 还需要maven环境 xff0c 因此spark源码编译需要安装jdk scala apache maven这三样环境 这里
  • ZendStudio+php+Apache开发环境搭建

    学习php xff0c 我们就想有一个好的ide xff0c ZendStudio是专门为php开发提供的ide xff0c 写完代码立马能够在工作空间中调试 xff0c 可以通过Run As gt PHP CLI Application
  • 图文详解win7实现局域网共享文件

    工作中 xff0c 我们有时候会拥有两台机器 xff0c 避免机器之间文件传来传去 xff0c 可以使用局域网文件共享 xff0c 在一台机器上开启文件共享 xff0c 另一台机器通过IP访问 xff0c 即可轻松实现文件互访 今天介绍我们
  • 模拟画图题P1185 绘制二叉树

    可能更好的观看体验 题目链接P1185 绘制二叉树 题意概述 根据规则绘制一棵被删去部分节点的满二叉树 节点用 o o o 表示 xff0c 树枝用 表示 每一层树枝长度会变化 xff0c 以满足叶子结点有如下特定 xff1a 相邻叶子节点
  • win7+MySQL5.7.18zip版本安装

    mysql5 7 18zip版本在windows的安装 xff0c 就是解压 xff0c 初始化 xff0c 然后做一些密码修改的设置即可使用 xff0c 如果需要远程连接 xff0c 需要更改用户表的host值为 39 39 xff0c
  • redhat7源码编译hadoop2.6.0

    以前在32位linux机器上编译过hadoop2 6 0 这次在redhat7 64bit上再次编译hadoop2 6 0 xff0c 除必须的jdk maven protobuf需要安装之外 xff0c 还需要安装系统依赖库gcc gcc
  • elasticsearch启动错误

    最近想尝试一下elk搭建实时日志分析系统 xff0c 结果运行elasticsearch时 xff0c 就遇到了一些问题 这些问题基本都是系统参数相关的 现在整理出来 xff0c 以免后面再次遇到 xff0c 也供大家参考 xff0c 少走
  • kafka+flume+hdfs实时日志流系统初探

    本次实验 xff0c 主要为了测试将kafka的消息通过flume接收并存入hdfs xff0c 如果之前搭建过hadoop flume kafka的 xff0c 这里会很快就会完成 xff0c 思路比较清晰 xff0c 主要配置在flum
  • 让Eclipse中spring的xml配置文件出现属性和类提示

    在spring配置文件中可以让配置bean的时候出现提示 xff0c 这里需要做一些设置 设置包括安装springide插件 spring beans version xsd文件引入 xff0c 增加xml编辑提示的字符 xff0c 默认只
  • win7查看端口占用的进程

    之前遇到一个问题 xff0c 系统上mysql启动了 xff0c 无法通过navicat客户端来连接 xff0c 这就很郁闷了 xff0c 最后定位到问题 xff0c 是我机器上还开启了一个开发php的应用程序phpwamp 它自带了一个m
  • cxf+spring实现webservice

    1 构建maven项目 xff0c 工程结构如下 xff1a 这里需要特别指出就是cxf core 3 1 12 jar类路径META INF cxf下有一个cxf xml的配置文件 xff0c 这个在applicationContext
  • Activemq+spring整合

    activemq与spring的整合需要用到线程池 考虑到连接 会话等资源的建立和释放 xff0c 无须人工操作 xff0c 全部交给容器来处理 这里通过一个实例讲解activemq与spring如何整合 项目大致是这样的设计 xff1a
  • springsecurity4.2入门完整实例

    1 构建maven项目 xff0c 引入springsecurity相关依赖 项目结构如下 xff1a pom xml配置文件主要部分 xff1a lt properties gt lt spring version gt 4 2 0 RE