-
oracle 死锁
select t1.sid, t1.SERIAL#, t3.sql_text from v$session t1, v$locked_object t2, v$sql t3 where t1.sid = t2.SESSION_ID AND t3.hash_value = t1.sql_hash_value;
-
oracle 查询约束
SELECT * FROM user_constraints WHERE CONSTRAINT_NAME = 'SYS_C0029063'
-
oracle 导出DUMP
create directory DUMP as '/oracle/soft'; select * from dba_directories where directory_name = 'DUMP'; export ORACLE_HOME=/oracle/app/oracle/product/19.3.0/dbhome_1 cd $ORACLE_HOME/bin ./expdp his/rqfd*317@127.0.0.1/his schemas=his directory=DUMP include="(PROCEDURE,TABLE,FUNCTION)" schemas="(DATAYL,HEALTH,HIS,LIS,PACS)" dumpfile=source_data.dmp logfile=source_exp.log ./impdp his/rqfd*317@127.0.0.1/his schemas=his directory=DUMP TABLE_EXISTS_ACTION=REPLACE dumpfile=source_data.dmp logfile=target_imp.log
-
oracle在函数、视图中搜索
select * from dba_source where text like 'jiuruikang%' and type='PROCEDURE'
-
oracle全库查询
declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from dba_tab_columns t where t.OWNER = '要查询的SCHEMA') loop begin v_Sql := 'select count(1) from ' || xx.owner || '.' || xx.table_name ||' where ' || LOWER(xx.column_name) || ' like ''%检索关键字%'' '; execute immediate v_Sql into v_count; if (v_count >= 1) then dbms_output.put_line(xx.table_name || ':' || xx.column_name || ':' || v_Sql); end if; exception when others then null; end; end loop; end;
-
1. 统一授权中心系统
1.1 用户管理
用户注册与登录:提供接口供用户注册和登录,支持多种身份验证方式(如用户名密码、第三方登录等)。
用户信息管理:提供接口管理用户信息,如修改密码、更新个人信息等。
1.2 OAuth2 服务
授权服务器:实现OAuth2协议,提供授权码模式(Authorization Code Flow)、简化模式(Implicit Flow)等,根据客户端类型选择合适的授权流程。
令牌颁发:颁发Access Token和Refresh Token,并支持Token的撤销和刷新。
客户端管理:管理客户端(如系统A和系统B)的注册信息,包括client_id、client_secret、回调URL等。
1.3 RBAC 权限管理
角色管理:定义角色,并为角色分配权限。
权限管理:定义权限,并将权限与资源(如API接口)关联。
用户角色分配:为用户分配角色。
2. 系统A(微信小程序)
2.1 登录与授权
微信登录:使用微信小程序的登录机制获取微信用户的openid等信息。
OAuth2 授权:将微信登录与OAuth2结合,用户通过微信登录后,授权中心系统颁发Access Token。
权限控制:在小程序端,根据Access Token中的角色和权限信息,控制用户对不同功能的访问。
2.2 API 访问
Token 传递:在调用后端API时,将Access Token放在请求头中进行身份验证和权限检查。
3. 系统B(独立的Web程序)
3.1 登录与授权
OAuth2 登录:用户通过OAuth2授权流程登录,选择授权系统B访问其信息。
权限控制:在Web程序中,根据Access Token中的角色和权限信息,控制用户对不同页面或功能的访问。
3.2 API 访问
Token 传递:在调用后端API时,将Access Token放在请求头中进行身份验证和权限检查。
4. 权限分离与控制
4.1 角色与权限定义
角色定义:定义不同的角色,如“普通用户”、“管理员”等。
权限定义:定义不同的权限,如“查看用户信息”、“修改用户信息”等。
角色权限分配:将权限分配给角色。
4.2 用户角色分配
用户角色分配:为用户分配一个或多个角色。
权限继承:用户通过其角色继承相应的权限。
4.3 权限检查
API权限检查:在授权中心系统中,对每个API接口进行权限检查,确保只有具有相应权限的用户才能访问。
前端权限控制:在系统A和系统B中,根据用户的权限信息,控制前端页面的显示和功能的可用性。
5. 安全考虑
Token 安全:确保Access Token和Refresh Token的安全性,防止Token泄露和滥用。
Session管理:如果使用Session机制,确保Session的安全性,如设置合适的过期时间、HttpOnly标志等。
跨域安全:如果系统A和系统B与授权中心系统跨域,确保CORS配置的安全性。
6. 技术选型
授权中心系统:可以使用Spring Security OAuth2或Keycloak等开源框架来实现OAuth2和RBAC功能。
数据库:使用关系型数据库(如MySQL)来存储用户、角色、权限等信息。
API网关:可以使用API网关(如Spring Cloud Gateway)来统一管理API的路由和权限检查。
7. 实施步骤
设计数据库模型:设计用户、角色、权限、客户端等表结构。
实现OAuth2服务:集成OAuth2框架,实现授权服务器和令牌颁发功能。
实现RBAC权限管理:实现角色、权限的管理功能,并将权限与API资源关联。
集成系统A和系统B:在系统A和系统B中集成OAuth2登录流程,并进行权限检查。
测试与优化:进行全面的测试,确保安全性和功能性,并根据测试结果进行优化。
-
wireguard的局限性
首先是必须得有公网ip
然后它的理念是设备之间组网而非域之间的组网,即两个不同网络见的两台设备进行通信。
而要实现手机(流量)访问某个局域网就得有中专服务器来配置流量转发,但如果有两个同网段的想互通就得通过添加配置(一个配置一个虚拟网卡)来实现,但是目前就只有docker的那个面板,还不支持多配置
-
Docker 不同网络的容器之间互相访问
按照Docker官方文档Docker and iptables说明,使用iptables进行网络隔离,使得默认情况下不同子网的容器之间是无法互相访问的。如果需要不同子网的容器之间互相访问时怎么办呢?文档给出了两种方法
1、禁用iptables
最直接的方法是在/etc/docker/daemon.json把iptables设置为false来直接禁用。这样所有的网络都没有隔离,但是这样做可能会破坏容器的网络。
2、使用DOCKER-USER链
可以通过iptables在DOCKER-USER链上添加规则以达到使用的目的。
iptables -I DOCKER-USER -i br-3bed419583c5 -o br-787e52a81bb4 -j ACCEPT
iptables -I DOCKER-USER -i br-787e52a81bb4 -o br-3bed419583c5 -j ACCEPT