Spring Sercurity(搭建篇)

微信公众号: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文件主要内容:

    <modules>
        <module>security-core</module>
        <module>security-borower</module>
        <module>security-app</module>
        <module>security-demo</module>
    </modules>
    <packaging>pom</packaging>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!--     会替你去管理maven的版本,我们不用自己去写版本,保证互相兼容       -->
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Brussels-SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>


            <!--     导入spring cloud的包       -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build>
        <plugins>
            <!--    使用maven的编译插件        -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <!-- 编译的配置 -->
                <configuration>
                    <!-- 源码环境1.8 -->
                    <source>1.8</source>
                    <!-- 编译后也是1.8 -->
                    <target>1.8</target>
                    <!-- encoding -->
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

   <dependencies>
        <!-- 跟spring-security相关的jar都会引进了 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- 加了数据库驱动要配置相关信息 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!-- spring-social相关,实现第三方登录用到的依赖 -->
        <dependency>
            <groupId>org.springframework.social</groupId>
            <artifactId>spring-social-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.social</groupId>
            <artifactId>spring-social-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.social</groupId>
            <artifactId>spring-social-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.social</groupId>
            <artifactId>spring-social-web</artifactId>
        </dependency>
        <!-- 常用工具类 -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
    </dependencies>

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

    <dependencies>
        <dependency>
            <groupId>com.xxx.security</groupId>
            <artifactId>security-core</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- spring对session的集群管理,默认会开启。但是我们可以关掉 -->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session</artifactId>
        </dependency>
    </dependencies>

security-demo工程的pom文件

<dependencies>
        <dependency>
            <artifactId>security-borower</artifactId>
            <groupId>com.xxx.security</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>


    <build>
        <!-- maven的打包插件,可以把我们得spring boot工程打包成一个可运行得jar包 -->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.3.3.RELEASE</version>
                <configuration>
                    <mainClass>com.zhaohong.DemoApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!-- 会让我们的项目以spring-boot的方式重新打包 -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <finalName>demo</finalName>
    </build>

application.properties文件

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

spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url= jdbc:mysql://127.0.0.1:3306/security-demo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false
spring.datasource.username = root
spring.datasource.password = xxxx


# 暂且关闭spring-session,后续会继续见解它的使用
spring.session.store-type = none
# 项目访问端口server.port = 80

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

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class);
    }
}
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello spring security";
    }
}

最终访问结果

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

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

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

查看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值