面试不要在说不熟悉spring security了,一个demo让你使劲忽悠面试官

简单介绍

自动spring boot 出现以来,spring security 逐渐被流行起来,主要是spring security 一直是被定义为一个重量级的框架,但是spring boot出现以后,就不一样了,spring security 就逐渐变得简单了很多

做java已经有了多年,发现写了几年的项目,都还没有机会接触到spring security 相关的框架,直到2019年来到了一个公司,做企业数字化的公司,才开始对spring security 有一定的接触

spring security 就是spring的安全模块,就是认证授权,使用起来也很简单,只需要轻轻的引入相关的依赖,就会自动对你的整个web工程做保护了。

源码下载

创建工程

  • 新建一个spring boot工程,名字叫做security,选择依赖spring security 和spring web
    添加maven依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

在这里插入图片描述

  • 新建HelloController类,写一个接口,就会自动交给spring security 管理了
@RestController
public class HelloController {

    @RequestMapping("/sayHello")
    public String sayHello(){
        return "十年生死两茫茫,不思量,自难忘----苏轼,hello";
    }
}

测试接口,感受spring security的强大

  • 启动工程security,默认端口号是8080,因为我们还没有配置用户,spring security会自动为我们创建一个默认的用户user,临时密码会在项目启动后通过日志打印到屏幕上,如图
    在这里插入图片描述
  • 访问接口:http://127.0.0.1:8080/sayHello,因为我们增加了spring security 安全模块,所有的接口访问都必须要得到认证授权后,才能正常访问,此时,会自动调整到登录页面,进行登录认证
    在这里插入图片描述
  • 输入用户名:user ,密码:d00df1eb-4a5f-4126-9a35-44eda4d49dfc ,点击登录就能正常访问接口了,注意,这里的密码是临时密码,每次项目启动,临时密码都会发生改变
    在这里插入图片描述

我们来撸一撸spring security安全模块是怎么工作的
1.在访问接口:http://127.0.0.1:8080/sayHello 时,会自动被spring security 拦截认证,发现请求没有携带有效的cookie 认证授权,就会自动重定向到登录spring security 的默认登录页面:http://127.0.0.1:8080/login
在这里插入图片描述
2.当用户输入用户名和密码后,点击登录,spring security认证授权成功后,会重新设置了cookie,然后重定向会到访问的接口地址
在这里插入图片描述
3.完成第二步之后,重定向回来了用户的访问地址:http://127.0.0.1:8080/sayHello 访问时,携带上了有效的cookie,所以能正常访问接口,并返回了接口值

到此,spring security的初级体验版完成了!

源码下载

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
很抱歉,作为AI语言模型,我无法在本地环境上运行代码,但是我可以为您提供一个简单的Spring Securitydemo代码: 1. 添加依赖 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ``` 2. 配置Spring Security ``` @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication() .withUser("user").password("password").roles("USER") .and() .withUser("admin").password("password").roles("USER", "ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/admin/**").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .logoutUrl("/logout") .permitAll(); } } ``` 3. 创建Controller ``` @Controller public class HomeController { @RequestMapping("/") public String home() { return "home"; } @RequestMapping("/admin") public String admin() { return "admin"; } @RequestMapping("/login") public String login() { return "login"; } } ``` 4. 创建视图 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Home Page</title> </head> <body> <h1>Welcome to the home page</h1> <p><a href="/admin">Admin Page</a></p> </body> </html> ``` ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Admin Page</title> </head> <body> <h1>Welcome to the admin page</h1> <p><a href="/">Home Page</a></p> </body> </html> ``` ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> </head> <body> <h1>Login</h1> <form method="post" action="/login"> <label for="username">Username:</label> <input type="text" id="username" name="username" required autofocus/> <br/> <label for="password">Password:</label> <input type="password" id="password" name="password" required/> <br/> <button type="submit">Login</button> </form> </body> </html> ``` 以上代码是一个简单的Spring Securitydemo,通过配置和代码实现了基本的认证和授权功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值