回到序章来来来,点这
情形有一些接口或许要求不需要用户登陆便可以直接请求,还有一些接口是拥有某些权限某些角色才可以访问,这章便是讲述怎么配置的。
效果啥人分配了啥权限,就能请求啥,没分配则请求不到。
正文123456789101112131415161718192021222324252627import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configurationpublic class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override pro ...
回到序章来来来,点这
正文注: 其实这个更多是让你在玩前后分离时配置的,不过因为我懒,所以就将就将就吧。
继续沿用初体验里的配置类,要自定义表单登陆里的接口,就只需要重写父类中的 configure(HttpSecurity http) 实现,常用的配置代码及解释如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import 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.springframewo ...
回到序章来来来,点这
实践引入包pom.xml
12345678<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>
Application.java( 启动类 )
1234567891011121314151617181920212223242526import org.springframework.boot.SpringApplication;import org.springframework.boot.auto ...
吐槽SpringBoot 折腾项目整合 OAuth2 ,网上 SpringSecurity5 的教程还是较少,官方又全英文,居然还不是打开即用的,所以记录一下个人对其从头到脚的食用手册。
重点在这
初体验
自定义登陆、登出等接口
配置接口请求的权限
多种加密方式共存的实现
了解认证流程
异常篇
实用篇:
整合 JPA 实现从 MySQL 数据库获得用户
增加验证码校验
增加记住我功能
附加篇:
SpringBoot 使用 Github 作为第三方登陆
通过增加 Filter 实现自定义认证
通过重写 Provider 实现自定义认证
通过重写 Provider 和 自定义 details 实现自定义认证
说明按官网的话说,弃用 spring-security-oauth,拥抱 spring-security。
大概历程实在懒得整理,参考 csdn上的这篇文章
官方文档
spring-security-oauth 仓库 README 的弃用通知
spring-security 的功能特性
版本SpringBoot 2.4.3
123456<parent> ...
各单位版本Grafana: v7.3.7 - Community < Docker >
修改 grafana 配置1vim /etc/grafana/grafana.ini
找到 [auth.generic_oauth] :
12345678910111213141516171819[auth.generic_oauth];enabled = false;name = OAuth;allow_sign_up = true;client_id = some_id;client_secret = some_secret;scopes = user:email,read:org;email_attribute_name = email:primary;email_attribute_path =;login_attribute_path =;id_token_attribute_name =;auth_url = https://foo.bar/login/oauth/authorize;token_url = https://foo.bar/login/oauth/acces ...
修改本地!!! 要确定本地文件没有被修改了才能开始下面的步骤
1git status
仅修改上次提交1git commit --amend --author="xx <xx@xx.com>"
执行完后会弹出交互,可以对当此提交信息进行更详细的修改。
修改历史的多次提交1git rebase -i HEAD~n
n:要修改多少条就改成多少
修改后 :wq 保存后会弹出一个交互,将需要修改的提交记录前的 pick 改成 e ,保存退出即可。
到此,会进入 rebase 交互状态,通过下面的命令进行修改和对修改进行确认。
1234# 修改git commit --amend --author="xx <xx@xx.com>"# 确认修改git rebase --continue
循环执行这部分,直到所有需要修改的记录都已经完成,如下图:
以上,本地的提交记录皆修改完成。
更新到远程1234## 拉取代码,如果确保本地是最新的可以不执行git fetch## 强制推送git push --force-with-leas ...
在集群上管理和运行容器的对象Pod 和 Controller 的关系
Pod 是通过 Controller 实现应用的运维: 比如伸缩、滚动升级等
俩者之间通过 label 标签建立关系
Deployment 控制器应用场景web 服务、微服务…
部署无状态的应用
管理 Pod 和 ReplicaSet
部署、滚动升级 等
使用 deployment 通过 yaml 部署应用12345678910spec: selector: matchLabels: app: web template: metadata: creationTimestamp: null labels: app: web
导出 yaml 文件
1kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
使用 yaml 文件部署应用
1kubectl apply -f web.yaml
对外发布( 暴露对外端口号 )
123kubectl expose d ...
存在意义防止 Pod 失联( 服务发现 )Pod 之间的调用是通过 ip 进行的,如果进行了回滚,升级等操作时,ip 是变化的,这样便会产生 Pod 失联的情况。于是乎,Pod 会向 Service 注册自己的信息,调用时,先去 Service 获得信息,再调用。
负载均衡在说 Controller 时,有提到一个 弹性伸缩 ,简单理解就是提供同一个功能的模块有多个,这里的负载均衡也就是指的调用它时要调用其中的哪一个。
Pod 和 Service 的关系与 Pod 和 Controller 的关系一样通过 labels 和 Selectors 进行关联。Service 会提供一个虚拟 ip (vip)进行连接
常用的 Service 类型ClusterIP集群内部使用
eg. Pod 之间调用
NodePort对外访问应用使用
eg. 部署了 nginx 服务,想要外部使用
LoadBalancer对外访问应用使用,公有云
NodePort 能实现的这个也都能实现,但是在对外网的时候,NodePort 需要使用 nginx 进行负载均衡,而 LoadBalancer 则可以直接连接 ...
概述
k8s 中创建和管理的最小单元。
包含一个或多个 container 容器
一个 Pod 中的容器共享网络命名空间
Pod 是短暂的
实现机制共享网络机制docker container 之间是相互隔离的,要实现共享网络,需要实现容器在同一个 namespace 之下。
Pod 实现共享网络机制的过程:
创建 Pause 容器(根容器、info 容器)
创建业务容器
将创建的业务容器加入到根容器中
循环 2-3
共享存储机制通过 Volumn 数据卷实现(持久化存储)
镜像拉取策略
IfNotPresent: 默认值,不存在才拉取
Always: 每次都重新拉取
Never: 从不拉取
Pod 资源限制根据配置的资源限制,完成适合的调度。
Request: 容器使用的最小资源需求,作为容器调度时资源分配的判断依赖。只有当节点上可分配资源量 >= 容器资源请求数时才允许将容器调度到该节点。但 Request 参数不限制容器的最大可使用资源。
Limit: 容器能使用资源的资源的最大值,设置为 0 表示使用资源无上限。
1234567891011121 ...
背景当前接到了一个需求,经过简化后如下:
当客户端上传日志到 Graylog 后,判定项目名称和错误级别,符合规则的生产一条 Kafka 消息。
实现参考 github/Graylog2/graylog-project-cli 安装 graylog-project-cli
生成项目12graylog-project bootstrap github://Graylog2/graylog-project.gitmvn archetype:generate -DarchetypeGroupId=org.graylog -DarchetypeArtifactId=graylog-plugin-archetype
静等片刻会出现以下的交互,根据需要填写即可。
123456groupId: cn.qingmgartifactId: graylog-plugin-kafka-notificationversion: 1.0.0package: cn.qingmg.graylog.plugin.kafka.notificationgithubRepo: https://gi ...










