SpringSecurity(一)

  一 . 介绍SpringSecurity

SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架,它是保护基于Spring的应用程序的实际标准。

Spring Security是⼀个⾯向Java应⽤程序提供身份验证和安全性的框架。

与所有Spring项⽬⼀样,Spring Security的真正威⼒在于它可以轻松地扩展以满⾜定制需求。

应用程序安全性可以归结为差不多两个独立的问题:身份验证(你是谁?)授权(你可以做什么?)

Spring Security架构设计中,认证和授权 是分开的,⽆论使⽤什么样的认证⽅式

 二. 权限管理

基本上涉及到⽤户参与的系统都要进⾏权限管理,权限管理属于系统安全的范畴,权限管理实现对⽤户访问系统的控制,按照安全规则或者安全策略控制⽤户可以访问⽽且只能访问⾃⼰被授权的资源。权限管理包括⽤户身份认证和授权两部分,简称认证授权。对于需要访问控制的资源⽤户⾸先经过身份认证,认证通过后⽤户具有该资源的访问权限⽅可访问。

也就是通过身份认证检查是否有进入系统的权利,通过授权检查是否有访问特定资源的权利。

1、认证

身份认证,就是判断⼀个⽤户是否为合法⽤户的处理过程。最常⽤的简单身份认证⽅式是系统通过核对⽤户输⼊的⽤户名和⼝令,看其是否与系统中存储的该⽤户的⽤户名和⼝令⼀致,来判断⽤户身份是否正确。

2、授权

授权,即访问控制,控制谁能访问哪些资源。主体进⾏身份认证后需要分配权限⽅可访问系统的资源,对于某些资源没有权限是⽆法访问的

三. 编写

1.加jar包

<!--  加jar  就代表项目加上了安全框架  没有加这个jar就代表项目没有使用安全框架 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.编写application.yml 

spring:
  security:
    user:
      name: dys
      password: dys

3.创建启动类

        

4.创建html页面

 5.创建配置类(新类 写一次可长久使用)

        里面写 SpringSecurity 逻辑 注释在代码内

package com.aaa.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;

// 配置类
@Configuration // spring框架中的注解   当前的类是一个配置类
@EnableWebSecurity
public class MySecurityConfig  extends WebSecurityConfigurerAdapter {
    /**
     * 配置用户的信息
     * @param auth
     * @throws Exception
     */
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        // 不能使用明文密码
        // 配置使用的密码是什么
        PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();// 密码解析器
        String pwd = passwordEncoder.encode("dys");// 加密之后的密码
        // 解析密码吗的时候 需要看你使用的加密规则  是什么   加密和解密务必使用同一套规则
        System.out.println("pwd = " + pwd);
        // 在内存中配置认证的信息
        auth.inMemoryAuthentication()
                .passwordEncoder(passwordEncoder)// 加密解密的规则
                .withUser("dys").password(pwd).roles("admin");
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.formLogin()
                .loginPage("/login.html").permitAll()// 登录的页面是login.html
                .loginProcessingUrl("/mylogin").permitAll();
        http.authorizeRequests().anyRequest().authenticated();// 除了放行之外的其他的路径全部需要认证
        // 由于我们设置的 登录是一个html页面
        http.csrf().disable();

    }


    @Override
    public void configure(WebSecurity web) throws Exception {
        super.configure(web);
    }
}

6.创建Controller层

        controller返回调用了前几次写好的Result工具类

package com.aaa.controller;


import com.aaa.util.Result;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("aaa")
public class MySecurityController {
    @GetMapping
    public Result index(){
        return Result.success("index");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值