SpringBoot2.6 安全机制与实战开发(二)|学习笔记

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 快速学习 SpringBoot2.6 安全机制与实战开发(二)

开发者学堂课程【Java Spring Boot 2.6.0开发实战-1024程序员节创造营公益课 SpringBoot2.6 安全机制与实战开发(二)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/903/detail/14343


SpringBoot2.6 安全机制与实战开发(二)


八,实战代码展示:

用户登录接口代码:

@RequestMapping(value = "/login", method = RequestMethod.POST)

public ModelAndView login(String username,string password,HttpServletRequest

request,HttpServletResponse response) {

system.out.print1n(username) ;

system. out.print1n(password);

ModelAndview mv = new ModelAndView("redirect:/Home/index" );try

//Hash 密码加密,

//SQL 注入,防止 SQL 注入

Users user = userServiceImpl.getUserByNameAndPassword(username,passwcif (user != null)

request.getsession().setAttribute("UserName",username);}else {

mv.setviewName( "redirect: ./ login");

}

catch (Exception e) {

System.out.println(e.getMessage());

}

raturn mv

注:Redis 可用于防止数据丢失。抖音及微信都存在大数据的相关技术,应用的比较多的就是行为大数据。

WebSecurityConfig 代码展示:

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.security.config.annotation.authentication.builders

import org.springframework.security.config.annotation.web.builders.HttpSecuri

import org.springframework.security.config.annotation.web.configuration.Enabl

import org.springframework.security.config.annotation.web.configuration.webSc

import org.springframework.security.crypto.password.NoOpPasswordEncoder;

import org.springframework.security.crypto.password.PasswordEncoder;

@Configuration

@EnablewebSecurity

public class webSecurityConfig extends webSecurityConfigurerAdapter {

@override

protected void configure(HttpSecurity http) throws Exception {

http

.authorizeRequests()

.antMatchers("/","/Home" ).permitAl1().antMatchers("/Users/**")I

.access( "hasRole( 'ROLE_ADMIN')").anyRequest().authenticated().and()

.formLogin();

}

@Autowired

public void configureGlobal(AuthenticationManagerBuilder auth) throws Exc

auth

.inMemoryAuthentication()

.withUser( "frankxu" )

.password( "1234qwer")

.roles( "ADMIN");

}

@Bean

public static PasswordEncoder passwordEncoder(){

return NoOpPasswordEncoder.getInstance();

}

AccountController 层代码展示:

@Controller

@RequestMapping( "/Account")

public class AccountController {

@Autowired

private UserserviceImpluserServiceImpl;

@RequestMapping(value = "/login", method = RequestMethod.GET)public string login() {

system.out.println("打开登录页面");return "Account/ login";

}

@RequestMapping(value = "/login", method = RequestMethod.PoST)

public ModelAndView login(String username,String password,HttpServletRe

request, HttpservletResponse response) {

System.out.println(username );

system.out.println(password);

ModelAndview mV = new ModelAndView("redirect:/Home/index");try i

//Hash 密码加密﹐

/ /SQL ,防止 sQL 注入

Users user = userServiceImpl.getUserByNameAndPassword(username,if (user != nul1) {

request.getsession( ).setAttribute("UserName", username);} else {

mv.setviewName( "redirect: ./ login");

}

}

catch (Exception e) {

System.out.println(e.getMessage());

}

return mv;

}

}

@RequestMapping(value = "/logout", method = RequestMethod.PoST)public int logout(String username) {

/ / redis 缓存删除状态信息,

// Redis缓存更新一个 status 01,下线 offline。return 1;

}

@RequestMapping(value = "/login", method = RequestMethod.pOST)

public Integer login(string username,string password,HttpServletRequest

request, HttpservletResponse response) i

//Redis缓存更新一个 status 1,在线 online。@RequestMapping(value = "/logout", method = RequestMethod.PoST)public int logout(String username) {

/ / redis 缓存删除状态信息,

// Redis 缓存更新一个 status 01,下线 offline。return 1;

}

@RequestMapping(value = "/login", method = RequestMethod.pOST)

public Integer login(string username,string password,HttpServletRequest

request, HttpservletResponse response) i

//Redis 缓存更新一个 status 1,在线 online。

}

@RequestMapping(value = "/login", method = RequestMethod.POST)

public Integer login(String username,String password,HttpServletRequest

request, HttpservletResponse response) {

// Redis 缓存更新一个 status 1,在线 online。

@RequestMapping(value = "/logout" , method = RequestMethod.POST)public int logout(String username) {

//redis 缓存删除状态信息,

//Redis 缓存更新一个 status 01,下线 offline。return 1;

}

@RequestMapping(value = "/login",method = RequestMethod.POST)

public Integer login(string username,String password,HttpServletRequest

request, HttpservletResponse response) {

// Redis 缓存更新一个 status 1,在线 online。

* try { //Hash 密码加密,//SQL注入,防止 SQL 注入//Users user:

@Controller

@RequestMapping( "/Account")

public class AccountController {

@Autowired

private UserserviceImpluserServiceImpl;

@RequestMapping(value = "/login", method = RequestMethod.GET)public string login() {

system.out.println("打开登录页面");return "Account/ login";

}

@RequestMapping(value = "/login", method = RequestMethod.PoST)

public ModelAndView login(String username,String password,HttpServletRe

request, HttpservletResponse response) {

System.out.println(username );

system.out.println(password);

ModelAndviewmV=new ModelAndView("redirect:/Home/index");try i

//Hash 密码加密﹐

/ /SQL 注入,防止 sQL 注入

Usersuser= userServiceImpl.getUserByNameAndPassword(username,if (user != nul1) {

request.getsession( ).setAttribute("UserName", username);} else {

mv.setviewName( "redirect: ./ login");

}

}

catch (Exception e) {

System.out.println(e.getMessage());

}

return m1;

}

}

UserController 层代码展示:

UsersRepository;

@Autowired

Userservice;

@RequestMapping( "/getAl1/{name} ")

public List<Users> getAll(@Pathvariable( "name") String name){

/ / string name ="java" ;

return userService.getAl1(name);

}

//查询所有的用户数据

@RequestMapping( "/getAll")public List<Users> getAl1(){

List<Users> listusers = (List<Users>) usersRepository.findAll();return listUsers;

}

}

 

九,Java 面试题

1. 本质:URL,拦截请求,验证,放行或者拒绝

2. Java Spring Security 安全机制

3. 如何扩展使用 Token 令牌验证

4. JWT 开源安全令牌组件

5. 如何支持 X509正式验证

6. 自定义实现 Spring Boot 2.5.x 身份验证

7. API 安全如何实现

8. SSO 单点登录怎么实现?

9.微服务 Spring Cloud 安全体系

10.前后端分离架构,JSON 数据,调用后端 API

11.Filter 过滤器,拦截所有请求,http 请求,请求头 token

//在移动互联网时代,前后端分离应用时 token 应用的非常广泛。

12.转 Java,跳槽一线互联网公司

相关文章
|
7月前
|
JavaScript 前端开发 Java
基于SpringBoot+Vue实现前后端交互功能(详解Vue框架机制)
基于SpringBoot+Vue实现前后端交互功能(详解Vue框架机制)
|
7月前
|
存储 安全 Java
Spring Boot整合Spring Security--学习笔记
Spring Boot整合Spring Security--学习笔记
105 1
|
7月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
2月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
4月前
|
Java 数据库 开发者
深入剖析 SpringBoot 的 SPI 机制
【8月更文挑战第10天】在软件开发中,SPI(Service Provider Interface)机制是一种重要的服务发现和加载机制,尤其在构建模块化、可扩展的系统时尤为重要。SpringBoot作为Spring家族的一员,其内置的SPI机制不仅继承了Java SPI的设计思想,还进行了优化和扩展,以适应Spring Boot特有的需求。本文将深入剖析SpringBoot中的SPI机制,揭示其背后的原理与应用。
94 7
|
4月前
|
Java 开发者 Spring
"揭秘SpringBoot魔法SPI机制:一键解锁服务扩展新姿势,让你的应用灵活飞天!"
【8月更文挑战第11天】SPI(Service Provider Interface)是Java的服务提供发现机制,用于运行时动态查找和加载服务实现。SpringBoot在其基础上进行了封装和优化,通过`spring.factories`文件提供更集中的配置方式,便于框架扩展和组件替换。本文通过定义接口`HelloService`及其实现类`HelloServiceImpl`,并在`spring.factories`中配置,结合`SpringFactoriesLoader`加载服务,展示了SpringBoot SPI机制的工作流程和优势。
63 5
|
4月前
|
安全 Java UED
掌握SpringBoot单点登录精髓,单点登录是一种身份认证机制
【8月更文挑战第31天】单点登录(Single Sign-On,简称SSO)是一种身份认证机制,它允许用户只需在多个相互信任的应用系统中登录一次,即可访问所有系统,而无需重复输入用户名和密码。在微服务架构日益盛行的今天,SSO成为提升用户体验和系统安全性的重要手段。本文将详细介绍如何在SpringBoot中实现SSO,并附上示例代码。
95 0
WXM
|
4月前
|
存储 缓存 Java
|
4月前
|
消息中间件 Java Kafka
深入SpringBoot的心脏地带:掌握其核心机制的全方位指南
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型,具有高可靠性及稳定性;RocketMQ 则是由阿里巴巴开源的高性能分布式消息队列,支持事务消息等多种特性;而 Kafka 是 LinkedIn 开源的分布式流处理平台,以其高吞吐量和良好的可扩展性著称。文中还提供了使用这三种消息队列产品的示例代码。总之,这三款产品各有优势,适用于不同场景。
19 0
|
4月前
|
消息中间件 Java Kafka
SpringBoot大揭秘:如何轻松掌握其核心机制?
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型,具有高可靠性及稳定性;RocketMQ 则是由阿里巴巴开源的高性能分布式消息队列,支持事务消息等多种特性;而 Kafka 是 LinkedIn 开源的分布式流处理平台,以其高吞吐量和良好的可扩展性著称。文中还提供了使用这三种消息队列产品的示例代码。
17 0

热门文章

最新文章