快速搭建IDEA+SpringBoot+SpringSecurity

本文为初学者提供了一步快速搭建IDEA中SpringBoot整合SpringSecurity的教程。主要涉及SpringSecurity的基本概念,包括认证和授权,并给出了不连接数据库的简单演示步骤:添加依赖、配置application.properties、编写配置类和Controller。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人萌新,没事不要问我,我也不知道。

基本概念和说明:

1.SpringSecurity自带初始登陆页面,当然你也可以用你做的页面替换
2.本人暂时了解的SpringSecurity的功能为:
认证:可以理解为登陆,身份的认证,理解为是否登陆的判断,就是一个购物网站,你可以不登陆浏览商品,但是你在加入购物车的时候就是进行登陆判断,你没有登陆就会引导你登陆。
授权:判断你是什么身份,对应着什么功能。你如果是马云登陆淘宝,那么你可以设置菜单,设置商品等。如果你是客户登陆淘宝,那你就只能浏览和购买。

3.本次演示不连接数据库,就是单纯的演示SpringSecurity,不整复杂,复杂了我也懵了。

本次演示步骤:

  1. 添加依赖
  2. 配置application.properties文件
  3. 完成配置类
  4. 直接运行

被红圈包起来的就是这次要弄的
在这里插入图片描述

直接开始:

1.添加依赖

<!--spring security安全框架,身份识别-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

2.配置application.properties文件
注意:这里说明一下,我创建项目的时候选择的是,SpringBoot+MySQL+mybatis,所以这里需要配置数据库,不然就报错。。。。。。

spring.datasource.url=jdbc:mysql:///localhost:3306/ssm001?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:mapper/*.xml

#配置视图解析器
#访问地址前缀
spring.mvc.view.prefix=/WEB-INF/views
#访问地址后缀
spring.mvc.view.suffix=.jsp
#工程路径
server.servlet.context-path=/
#端口
server.port=8080

3.完成配置类(下面是两个配置类和一个Controller类,你们要用记得改包名和类名)

package com.example.demo4.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

//SpringMVC配置类
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("redirect:/login");
    }
}
package com.example.demo4.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

//Security配置类
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

//    定义用户信息服务(查询用户信息)
    @Bean
    public UserDetailsService userDetailsService(){
//        内存的方式
        InMemoryUserDetailsManager manager =new InMemoryUserDetailsManager();

//        manager.createUser(User.withUsername("模拟数据库中取出的用户名").password("模拟数据库中取出的密码").authorities("数据库中取出的权限").build());
        manager.createUser(User.withUsername("admin").password("admin").authorities("p1").build());
        return manager;
    }

//    密码编码器,NoOpPasswordEncoder字符串比较,没有加密80
    @Bean
    public PasswordEncoder passwordEncoder(){
        return NoOpPasswordEncoder.getInstance();
    }

//    安全拦截机制(核心)
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
//                设置需要拦截的地址,和对应的权限(/r/r1是地址,p1是权限)
//                .antMatchers("/r/r1").hasAuthority("p1")
//                .antMatchers("/r/r2").hasAuthority("p2")
//                设置所有在/r/下面的地址全部都要认证通过
                .antMatchers("/r/**").authenticated()
//                 除了上述/r/下面的地址,其他的都不需要认证
                .anyRequest().permitAll()
                .and()
//                允许表单登陆
                .formLogin()
//                自定义登陆成功的页面地址
                .successForwardUrl("/login-success");
    }


//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//        auth.userDetailsService(userDetailsService()).passwordEncoder(passwordEncoder());
//    }

}
package com.example.demo4.config;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/")
public class SecurityController {

    @RequestMapping(value = "login-success",produces = {"text/plain;charset=UTF-8"})
    public String loginSuccess(){return "登陆成功;";}

    @RequestMapping(value = "/r/r1",produces = {"text/plain;charset=UTF-8"})
    public String r1(){return "资源1;";}

    @RequestMapping(value = "/r/r2",produces = {"text/plain;charset=UTF-8"})
    public String r2(){return "资源2;";}
}

4.开始运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值