SpringSecurity废弃WebSecurityConfigurerAdapter后配置
ApplicationConfiguration.java12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package com.example.springsecurity.config;import com.example.springsecurity.dao.UserMapper;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.authentication.AuthenticationProvider;import org.springframework.securi ...
SpringSecurity查看过滤器链
配置 application.properties1#logging.level.org.springframework.security.web.FilterChainProxy=DEBUG
运行控制台打印出过滤器链信息
使用 Mybatis 向 Postgresql 插入 UUID 字段
数据库id 字段设置为 character varying
User 对象id 设置为 String 类型
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273package com.example.springsecurity.entity;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import java.util.Collection;import java.util.Date;import java.util.List;import java.util.UUID;public class User implements UserDetails { ...
Spring boot + Postgresql 实现 JWT 身份验证
背景在不断发展的 Web 开发和应用程序安全领域,对强大身份验证机制的需求从未如此迫切。向公众公开 API 时,确保只有授权人员才能访问资源至关重要。
JSON Web Tokens (JWT) 是现代 Web 应用程序中最流行、最有效的身份验证方法之一。它提供了一种灵活、无状态的方式来验证用户身份并保护 API 端点;它也被称为基于 Token 的身份验证。
在本文中,我们将探讨在 Spring Boot 3 应用程序中实现 JWT 身份验证。
目标API 必须公开一些无需身份验证即可访问的路由,而另一些则需要身份验证。下表列举了这些路由:
AP 路由
访问状态
描述
[POST] /auth/login
未受保护
注册新用户
[POST] /auth/signup
未受保护
验证用户身份
[GET] /user
受保护
检索当前经过身份验证的用户
工具
JDK 21
Postgresql 16.2
SpringBoot 3.2.3
Mybatis
Maven
Spring Security 6.2.3
依赖 ...
Angular Chapter1
1.1 设计原则和方法YAGNI
You Aren’t Gonna Need It
不写不需要的代码
DRY
Don’t Repeat Yourself
不要重复你自己的代码
OCP
OPen Close Principle
开闭原则,对扩展开放,对修改封闭
Low Coupling, High Cohesion
高聚合,低耦合
Dimeter Law
迪米特法则,“最少知识” 法则
一个对象/组件只负责必须的少量功能
Angular Chapter2
2.1 Angular 概述AngularJS v1.x 官网:https://angularjs.org/
Angular v2.x~v8.x 官网:https://angular.io/
Angular中文镜像网站:https://angular.cn/
搭建Angular开发环境前提:Node.js V10.x 以上
12C:\Users\lenovo>node -vv18.19.0
下载并安装脚手架工具默认仓库:registry.npmjs.com
1npm i -g @angular/cli
运行脚手架工具创建空白项目1ng new myngapp01
最新版没有生成app.module.ts,修改命令
https://github.com/angular/angular/issues/52751
1D:\Angular_Learning\Project>ng new myngapp01 --no-standalone --routing --ssr=false
进入空白项目并运行开发服务器12cd myngapp01npm start
客户端访问测试 ...
Angular Chapter3
3.1 模块Angular项目启动过程分析
angular.json:NG 项目的配置
index:./src/index.html <app-root></app-root>
brower:./scr/main.ts
main.ts:bootstrapModule(AppModule)
app.module.ts:bootstrap:AppComponent
app.component.ts :selector:'app-root'
templateUrl:'app.component.html
app.component.html:HTML片段
3.2 组件Angular 核心概念(一):模块
Module:不同于Node.js 或 ES6中的模块,NG 中的模块就是一个抽象的容器,用于对组件进行分组。
整个应用初始时有且只有一个主组件:AppModule
Angular 核心概念(二):组件
组件:是一段可以反复使用的页面片段,如页头 ...
链表
147. 对链表进行插入排序
Problem: 147. 对链表进行插入排序
思路
维护有序链表,开始时只有一个头节点。
哑节点dommuy.next = head,便于在头节点前插入节点
有序链表最后一个节点lastSorted
待插入节点cur
while循环对cur遍历
如果lastSorted <= cur,将lastSorted和cur均向后移动一个节点
否则,需要将cur插入到有序链表中。定义prev为有序链表中cur节点的邻近前节点。初始化prev为哑节点(不是头节点,要用prev.next比较)。
如果prev的后节点小于等于cur,prev向后移动一位
否则。说明找到了插入位置,改变lastSorted,cur,prev的next指针,将cur插入到有序链表中。
将cur更新为lastSorted.next
Code1234567891011121314151617181920212223242526272829303132333435/** * Definition for singly-linked list. * publi ...
数组
34. 在排序数组中查找元素的第一个和最后一个位置
Problem: 34. 在排序数组中查找元素的第一个和最后一个位置
思路两次二分查找,分别找到等于$target$ 的元素的最左位置和最右位置
初始化最左位置 $first = -1$,最右位置 $last = -1$。
找最左位置:
如果$nums[mid]$ 等于 $target$,暂时认为此时的位置是最左位置,令$first = mid$。再让 $right = mid - 1$,尝试查找更左的位置是否还有与 $target$ 相同的元素。
如果 $nums[mid]$ 小于 $target$,查找 $mid$ 右侧的元素
如果 $nums[mid]$ 大于 $target$,查找 $mid$ 左侧的元素。
找最右位置同理:
如果$nums[mid]$ 等于 $target$,暂时认为此时的位置是最右位置,令$last = mid$。再让 $left = mid + 1$,尝试查找更右的位置是否还有与 $target$ 相同的元素。
如果 $nums[mid] ...