当前位置:   article > 正文

Spring Sercurity(搭建篇)

springser

微信公众号:Java患者
专注Java领域技术分享

Spring Sercurity介绍

        在web应用开发中,安全无疑是十分重要的,选择Spring Security来保护web应用是一个非常好的选择。Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。

Spring Sercurity项目搭建

这是我们最基本的架构图:

  • security:父工程

  • security-core:核心业务逻辑

  • security-borowser:浏览器相关特定代码

  • security-app:app相关特定代码

  • security-demo:样例程序

pom文件

security的pom文件主要内容:

  1. <modules>
  2. <module>security-core</module>
  3. <module>security-borower</module>
  4. <module>security-app</module>
  5. <module>security-demo</module>
  6. </modules>
  7. <packaging>pom</packaging>
  8. <properties>
  9. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  10. </properties>
  11. <dependencyManagement>
  12. <dependencies>
  13. <!-- 会替你去管理maven的版本,我们不用自己去写版本,保证互相兼容 -->
  14. <dependency>
  15. <groupId>io.spring.platform</groupId>
  16. <artifactId>platform-bom</artifactId>
  17. <version>Brussels-SR2</version>
  18. <type>pom</type>
  19. <scope>import</scope>
  20. </dependency>
  21. <!-- 导入spring cloud的包 -->
  22. <dependency>
  23. <groupId>org.springframework.cloud</groupId>
  24. <artifactId>spring-cloud-dependencies</artifactId>
  25. <version>Dalston.SR2</version>
  26. <type>pom</type>
  27. <scope>import</scope>
  28. </dependency>
  29. </dependencies>
  30. </dependencyManagement>
  31. <build>
  32. <plugins>
  33. <!-- 使用maven的编译插件 -->
  34. <plugin>
  35. <groupId>org.apache.maven.plugins</groupId>
  36. <artifactId>maven-compiler-plugin</artifactId>
  37. <version>2.3.2</version>
  38. <!-- 编译的配置 -->
  39. <configuration>
  40. <!-- 源码环境1.8 -->
  41. <source>1.8</source>
  42. <!-- 编译后也是1.8 -->
  43. <target>1.8</target>
  44. <!-- encoding -->
  45. <encoding>UTF-8</encoding>
  46. </configuration>
  47. </plugin>
  48. </plugins>
  49. </build>

security-core的pom文件主要内容:

  1. <dependencies>
  2. <!-- 跟spring-security相关的jar都会引进了 -->
  3. <dependency>
  4. <groupId>org.springframework.cloud</groupId>
  5. <artifactId>spring-cloud-starter-oauth2</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-data-redis</artifactId>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-jdbc</artifactId>
  14. </dependency>
  15. <!-- 加了数据库驱动要配置相关信息 -->
  16. <dependency>
  17. <groupId>mysql</groupId>
  18. <artifactId>mysql-connector-java</artifactId>
  19. </dependency>
  20. <!-- spring-social相关,实现第三方登录用到的依赖 -->
  21. <dependency>
  22. <groupId>org.springframework.social</groupId>
  23. <artifactId>spring-social-config</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework.social</groupId>
  27. <artifactId>spring-social-core</artifactId>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.springframework.social</groupId>
  31. <artifactId>spring-social-security</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.social</groupId>
  35. <artifactId>spring-social-web</artifactId>
  36. </dependency>
  37. <!-- 常用工具类 -->
  38. <dependency>
  39. <groupId>commons-lang</groupId>
  40. <artifactId>commons-lang</artifactId>
  41. </dependency>
  42. <dependency>
  43. <groupId>commons-collections</groupId>
  44. <artifactId>commons-collections</artifactId>
  45. </dependency>
  46. <dependency>
  47. <groupId>commons-beanutils</groupId>
  48. <artifactId>commons-beanutils</artifactId>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-configuration-processor</artifactId>
  53. </dependency>
  54. </dependencies>

security-borowser和security-app的pom文件主要内容

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.xxx.security</groupId>
  4. <artifactId>security-core</artifactId>
  5. <version>1.0-SNAPSHOT</version>
  6. </dependency>
  7. <!-- spring对session的集群管理,默认会开启。但是我们可以关掉 -->
  8. <dependency>
  9. <groupId>org.springframework.session</groupId>
  10. <artifactId>spring-session</artifactId>
  11. </dependency>
  12. </dependencies>

security-demo工程的pom文件

  1. <dependencies>
  2. <dependency>
  3. <artifactId>security-borower</artifactId>
  4. <groupId>com.xxx.security</groupId>
  5. <version>1.0-SNAPSHOT</version>
  6. </dependency>
  7. </dependencies>
  8. <build>
  9.         <!-- maven的打包插件,可以把我们得spring boot工程打包成一个可运行得jar包 -->
  10. <plugins>
  11. <plugin>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-maven-plugin</artifactId>
  14. <version>1.3.3.RELEASE</version>
  15. <configuration>
  16. <mainClass>com.zhaohong.DemoApplication</mainClass>
  17. </configuration>
  18. <executions>
  19. <execution>
  20. <goals>
  21. <!-- 会让我们的项目以spring-boot的方式重新打包 -->
  22. <goal>repackage</goal>
  23. </goals>
  24. </execution>
  25. </executions>
  26. </plugin>
  27. </plugins>
  28. <finalName>demo</finalName>
  29. </build>

application.properties文件

        由于我们引入了mysql的驱动包和spring-session,那么我们需要在security-demo工程配置jdbc连接信息,反则项目启动会报错。

  1. spring.datasource.driver-class-name = com.mysql.jdbc.Driver
  2. spring.datasource.url= jdbc:mysql://127.0.0.1:3306/security-demo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
  3. spring.datasource.username = root
  4. spring.datasource.password = xxxx
  5. # 暂且关闭spring-session,后续会继续见解它的使用
  6. spring.session.store-type = none
  7. # 项目访问端口server.port = 80

        现在我们可以在security-demo工程中开始写我们的spring boot的启动类和第一个Controller。

  1. @SpringBootApplication
  2. @RestController
  3. public class DemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoApplication.class);
  6. }
  7. }
  1. @RestController
  2. public class HelloController {
  3. @GetMapping("/hello")
  4. public String hello(){
  5. return "hello spring security";
  6. }
  7. }

最终访问结果

我们访问http://localhost/hello:

        会弹出spring-security的用户验证对话框,这是在spring环境下的security默认配置,我们可以通过一写的方式关闭:

  1. # 关闭spring-security身份验证
  2. security.basic.enabled = false

查看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/53884?site
推荐阅读
相关标签
  

闽ICP备14008679号