Spring Securty 应用(1)-- 基于内存的认证
来源:互联网 发布:淘宝卖家怎样实名认证 编辑:程序博客网 时间:2024/06/16 19:30
完成功能:
1.welcome界面不进行认证,可以直接访问
2.admin界面需要进行认证才能进行访问
具体实现:
1.配置 Spring Security pom.xml
2.配置 Spring Security web.xml 中的拦截器
3.配置 spring-security.xml 进行安全配置
4.定义JSP页面 hello.jsp 和 admin.jsp
配置pom.xml Spring Security的依赖包
<properties> <spring.security.version>3.2.3.RELEASE</spring.security.version></properties><!-- Spring Security --><dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring.security.version}</version></dependency><dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version></dependency><dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version></dependency>
配置 web.xml 进行安全拦截
<!-- 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>
配置spring-security.xml
此处为Spring Security安全认证的核心配置。
次例为当访问admin.jsp页面的时候,进行安全拦截,由于使用默认配置,spring Security会自动跳转到Spring Security 的登录页面 http://localhost:8080/spring_security_login,然后输入用户名和密码,认证通过之后即可访问页面admin.jsp
<http auto-config="true"> 表示使用Spring Security的默认配置<intercept-url pattern="/admin" access="ROLE_USER" /> 表示拦截路劲为/admin,且具有ROLE_USER 访问权限才能通过user-service 为可以认证通过的用户,且局用的访问权限<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" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 只对Admin 进行拦截 --> <http auto-config="true"> <intercept-url pattern="/admin" access="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>
hello.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta name="_csrf" content="${_csrf.token}"/> <meta name="_csrf_header" content="X-CSRF-TOKEN" /><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>${title}</title></head><body> <h1>Title:${title}</h1> <h1>Message:${message}</h1></body></html>
admin.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta name="_csrf" content="${_csrf.token}"/> <meta name="_csrf_header" content="X-CSRF-TOKEN"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>${title}</title></head><body><h1>Title : ${title}</h1><h1>Message : ${message}</h1><c:if test="${pageContext.request.userPrincipal.name != null}"> <h2> Welcome : ${pageContext.request.userPrincipal.name} | <a href="<c:url value="/j_spring_security_logout" />"> Logout</a> </h2></c:if></body></html>
控制器代码
package com.cnblogs.duoduo;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class HelloController { @RequestMapping(value = {"/", "/welcome"}) public ModelAndView welcome() { ModelAndView model = new ModelAndView(); model.addObject("title", "Welcome - Spring Security Hello World"); model.addObject("message", "This is welcome page!"); model.setViewName("hello"); return model; } @RequestMapping(value = "/admin") public ModelAndView admin() { ModelAndView model = new ModelAndView(); model.addObject("title", "Admin - Spring Security Hello World"); model.addObject("message", "This is protected page!"); model.setViewName("admin"); return model; }}
0 0
- Spring Securty 应用(1)-- 基于内存的认证
- Spring Securty 应用(2)-- 自定义登录界面
- 基于spring security的简易用户身份认证(数据库)
- spring mvc 基于表单的认证过程及cookie应用和session管理
- Spring基于自定义注解的用户认证
- spring security:基于MongoDB的认证
- NodeJS 实现基于 token 的认证应用
- spring security基于数据库的安全认证 配置
- spring security起步六:基于数据库的用户认证
- JavaWeb应用中的身份验证(声明式)——基于表单的身份认证
- ASP.NET应用中用C#实现基于表单的认证
- 基于 802.1x 认证技术的应用分析
- 基于802.1x认证技术的应用分析
- 基于JAVA技术的Web应用开发认证题
- 基于802.1x认证技术的应用分析
- 基于802.1x认证技术的应用分析(转)
- 基于802.1x认证技术的应用分析
- 基于802.1x认证技术的应用分析
- pymysql 1146-table doesn't exit的问题
- Tomcat下使用Log4j,按日期每天存放,解决catalina.out日志文件过大问题
- PHP exec()函数的介绍和使用DEMO
- MongoDB学习记录08-复制(副本集)
- php常用探针
- Spring Securty 应用(1)-- 基于内存的认证
- Fragment全解析系列(一):那些年踩过的坑
- 性能测试中用到的linux命令分析
- mybatis 学习记录(2)—— 分页查询
- 【python图像处理】图像的滤波(ImageFilter类详解)
- JSP+Servlet实现文件的上传与下载
- Android控件系列之Button以及Android监听器
- PAT 1008 乙等(数组元素循环右移)c++
- ZooKeeper 命令列表