《基于注释的Spring Security实战指南》
版权声明:本文属于原创,版权归作者chszs所有,使用源码无任何限制,但转载文章需经作者同意。
一、准备工作
预准备的工具及软件有:
1.EclipseIDE:我使用EclipseJEE3.7版,即eclipse-jee-indigo-SR2-win32-x86_64.zip
2.JDK7:我使用JDK7u4版,即jdk-7u4-windows-x64.exe
3.SpringFramework:我使用SpringFramework3.1.2版,即spring-framework-3.1.2.RELEASE-with-docs.zip
4.SpringSecurity:我使用SpringSecurity3.1.2版,即spring-security-3.1.2.RELEASE-dist
5.其它JAR包:jstl-1.2.jar,commons-logging-1.1.1.jar,cglib-nodep-2.2.jar
6.Tomcat应用服务器:我使用Tomcat7.0.29版,即apache-tomcat-7.0.29-windows-x64.zip
说明:
1.EclipseIDE和JDK7的版本可以更高一些,不影响开发和调试。
2.Eclipse一定要下载JEE版。
3.Eclipse、JDK和Tomcat的安装过程省略。
4.我的操作系统是64位版本,故开发环境对应的工具都是下载64位的安装包。
二、新建项目
在Eclipse环境下新建DynamicWebProject。
项目名为:SpringSecurityDemo,
Targetruntime选择NewRuntime,然后选择ApacheTomcatv7.0,并设置好Tomcat的安装目录。
连续点击两次Next,在“Generateweb.xmldeploymentdescriptor”处打勾选择,并点击Finish。
三、添加库文件
把下列JAR文件添加到项目的WebContent\WEB-INF\lib目录下。
四、业务层开发
1.在项目src处,新建com.ch.configuration包,并新建WebConfig.java类,内容如下:
package com.ch.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "com.jverstry")
@ImportResource("/WEB-INF/MyServlet-security.xml")
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("WEB-INF/pages/");
resolver.setSuffix(".jsp");
return resolver;
}
}
2.新建com.ch.configuration.controller包,并新建MyController.java类,内容如下:
package com.ch.configuration.controller;
import com.ch.configuration.service.MyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class MyController {
private MyService myService;
@Autowired
public void setMyService(MyService myService) {
this.myService = myService;
}
@RequestMapping(value = "/")
public String home() {
return "index";
}
@RequestMapping(value = "/getTime")
public String helloWorld(Model model) {
model.addAttribute("TimeIs", myService.getCurrentTimeInMilliseconds());
return "getTime";
}
}
3.新建com.ch.configuration.service包,并新建MyService.java接口类,内容如下:
package com.ch.configuration.service;
public interface MyService {
long getCurrentTimeInMilliseconds();
}
4.在com.ch.configuration.service包新建MyServiceImpl.java类,内容如下:
package com.ch.configuration.service;
public class MyServiceImpl implements MyService {
@Override
public long getCurrentTimeInMilliseconds() {
return System.currentTimeMillis();
}
}
5.在com.ch.configuration.service包新建MyServicesConfiguration.java类,内容如下:
package com.ch.configuration.service;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyServicesConfiguration {
private MyService myService = new MyServiceImpl();
@Bean
public MyService getMyService() {
return myService;
}
}
五、前台页面层开发
1.在WebContent\WEB-INF目录新建pages文件夹,接着在pages目录下新建getTime.jsp文件,内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ 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 http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Get Time !!!</title>
</head>
<body>
The time in milliseconds is:
<c:out value="${TimeIs}" />
!
</body>
</html>
2.在pages目录下新建index.jsp文件,内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome !!!</title>
</head>
<body>
<h1>Welcome To Spring MVC With Annotations !!!</h1>
<h1>(with login...)</h1>
</body>
</html>
3.修改WEB-INF下的web.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>SpringSecurityDemo</display-name>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.ch.configuration</param-value>
</context-param>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file></welcome-file>
</welcome-file-list>
</web-app>
4.在WEB-INF下新建MyServlet-security.xml文件,内容如下:
<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/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http auto-config="true">
<intercept-url pattern="/*" access="ROLE_USER" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user authorities="ROLE_USER" name="guest" password="guest" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
至此,Demo项目的开发已经完成。项目的整体结构图如图所示:
六、部署和运行
1.在Eclipse选择项目SpringSecurityDemo,右键选择“RunAs”,再选择“RunonServer”,选择ApacheTomcatv7.0,EclipseIDE自动完成部署并运行。
在浏览器上输入地址:http://localhost:8080/SpringSecurityDemo/
显示如下:
注:地址自动被重定向到http://localhost:8080/SpringSecurityDemo/spring_security_login
User/Password输入guest/guest,显示:
如果输入错误,显示:
OK!本文就到这里,对于Spring的注释,可以参考官方文档加以理解。
分享到:
相关推荐
Spring Security 是一个强大的且高度可定制的身份验证和访问控制框架,用于保护基于Java的应用程序。在本项目中,我们完成了Spring Security的初步搭建,通过注释丰富的源代码,旨在为开发者提供清晰的理解和实践...
在代码中,开发者可能通过注释详细说明了每个步骤的实现,例如如何配置OAuth2客户端信息,如何处理授权回调,以及如何在Spring Security中设置访问控制规则。 此外,标签中提到的“sso”(Single Sign-On)表示这个...
赠送jar包:spring-security-core-5.0.7.RELEASE.jar; 赠送原API文档:spring-security-core-5.0.7.RELEASE-javadoc.jar; 赠送源代码:spring-security-core-5.0.7.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:spring-security-crypto-5.5.2.jar; 赠送原API文档:spring-security-crypto-5.5.2-javadoc.jar; 赠送源代码:spring-security-crypto-5.5.2-sources.jar; 赠送Maven依赖信息文件:spring-security-...
赠送jar包:spring-security-core-5.2.0.RELEASE.jar; 赠送原API文档:spring-security-core-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-security-core-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
SpringBoot+SpringSecurity整合示例代码,实现了从数据库中获取信息进行登录认证和权限认证。 本项目为idea工程,请用idea2019导入(老版应该也可以)。 本项目用户信息所需sql文件,在工程的resources文件夹下,...
赠送jar包:spring-security-crypto-5.6.1.jar; 赠送原API文档:spring-security-crypto-5.6.1-javadoc.jar; 赠送源代码:spring-security-crypto-5.6.1-sources.jar; 赠送Maven依赖信息文件:spring-security-...
赠送jar包:spring-security-core-5.5.2.jar; 赠送原API文档:spring-security-core-5.5.2-javadoc.jar; 赠送源代码:spring-security-core-5.5.2-sources.jar; 赠送Maven依赖信息文件:spring-security-core-...
在Spring Security 2中,配置Cookie的保存时间是一项重要的任务,因为这关乎到用户的会话持久性和安全性。Cookie是Web应用程序中用于存储用户状态的一种机制,例如登录信息、个性化设置等。正确设置Cookie的生命周期...
总的来说,"基于Spring Security的用户权限"项目提供了一个直观的起点,帮助初学者掌握Spring Security的基础知识,如权限控制、认证和授权。通过深入学习并实践这个项目,你可以建立起对Spring Security框架的扎实...
赠送jar包:spring-security-core-5.3.9.RELEASE.jar; 赠送原API文档:spring-security-core-5.3.9.RELEASE-javadoc.jar; 赠送源代码:spring-security-core-5.3.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
本项目基于Spring Security,专为初学者设计,旨在简化理解和实践用户角色权限管理。 **核心组件** 1. **Authentication(认证)**:Spring Security 提供了多种认证机制,包括基于表单的身份验证、HTTP基本认证等...
Spring Security 参考 1 第一部分前言 15 1.入门 16 2.介绍 17 2.1什么是Spring Security? 17 2.2历史 19 2.3版本编号 20 2.4获得Spring安全 21 2.4.1使用Maven 21 Maven仓库 21 Spring框架 22 2.4.2 Gradle 23 ...
Spring Security OAuth2是一个广泛使用的Java库,用于在Spring应用程序中实现OAuth2协议,提供安全授权服务。OAuth2是一种授权框架,允许第三方应用在用户许可的情况下访问其私有资源,如在社交媒体上的数据。2.0.3....
赠送jar包:spring-security-rsa-1.0.10.RELEASE.jar; 赠送原API文档:spring-security-rsa-1.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-security-rsa-1.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:spring-security-jwt-1.0.10.RELEASE.jar; 赠送原API文档:spring-security-jwt-1.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-security-jwt-1.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:spring-security-web-5.5.2.jar; 赠送原API文档:spring-security-web-5.5.2-javadoc.jar; 赠送源代码:spring-security-web-5.5.2-sources.jar; 赠送Maven依赖信息文件:spring-security-web-5.5.2....
#### 六、Spring Security 3.1 的实践指南 1. **理解 Spring Security 的架构**:深入学习 Spring Security 的各个组件及其工作原理。 2. **配置安全策略**:根据具体需求配置合适的认证、授权策略。 3. **编写...
赠送jar包:spring-security-test-5.6.1.jar; 赠送原API文档:spring-security-test-5.6.1-javadoc.jar; 赠送源代码:spring-security-test-5.6.1-sources.jar; 赠送Maven依赖信息文件:spring-security-test-...
赠送jar包:spring-security-web-5.2.0.RELEASE.jar; 赠送原API文档:spring-security-web-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-security-web-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:...