技术圈开发者交流群:

使用 PHP-Casbin 在 SaaS 应用中做多租户权限系统架构设计

多租户(multi-tenancy)是一种软件架构技术,是实现在多租户的环境下共用相同的系统或程序组件,并且保证各用户间的数据隔离,也可称作域租户

PHP-Casbin 不仅提供了全局的RBAC的权限模型,而且还支持特定域的权限模型。特定租户/域的角色意味着当用户在不同的租户/域中时,用户可以拥有不同的角色,亦拥有不同的权限策略。在大型项目中,特别是在像SaaS PaaS这种云服务中,不同的租户需要拥有独立的权限控制,这就非常有用。

这里我以一个多商户的电商平台为例,电商平台的商户就是租户,每个商户有自己的管理人员,可以分配不同的角色,定义自己的权限。这些商户间的数据在逻辑上是完全隔离的,但他们共享这个电商平台的其他资源。

PHP 2023年06月03日 1442

用 PHP-Casbin 做权限控制时,如何使用自定义函数

PHP-Casbin 是一个非常流行的权限控制框架,支持ACL RBAC ABAC 等权限控制模型。

它使用 Matcher 中配置的表达式来做权限决策,不仅提供了非常多的内置函数,而且还可以在Matcher中指定自定义函数。

如果你的项目还有没有引入Casbin依赖,则需要安装一下:

PHP 2023年05月20日 817

Redis 列表(List) 相关命令

列表(List),就是存放一组数据的列表,就相当于我们编程语言中所使用的数组列表顺序就是插入的顺序,可以从列表的头部插入元素,也可以从尾部插入元素。

Redis 中一个列表最多包含 2 的 32 次方 - 1 (4294967295)个元素。

LPUSH 命令是向列表中插入一个或多个元素,是列表的头部插入。列表如果不存在则会自动创建。

工具 2023年04月01日 861

主流编程语言的包管理工具

术业有专攻,闻道有先后。班门弄斧,请指教。

编程语言五花八门,在历史的洪流中,不断有新的编程语言、新的工具诞生。有的老牌语言依然是中流砥柱,有的新生代语言突飞猛进,后生可畏。

一个编程语言要想发展起来,包管理工具必不可少,包的数量与质量,决定着编程语言的周边生态的好坏。

工具 2023年03月09日 1362

Go语言 build 构建时使用 ldflags 参数注入版本信息

在工作中,经常需要查看一些应用程序的版本,使用-v--vserion等参数查看一个应用的版本,比如:

# node -v
v16.13.1

# go version
go version
go version go1.12.9 linux/amd64

那通过go build构成后生成的可执行文件,如果获取它的版本呢?

GoLang 2023年02月19日 1599

Go语言中实现RSA加解密、签名验证算法

随着互联网的高速发展,人们对安全的要求也越来越高。密码学中两大经典算法,一个是对称加解密,另一个是非对称加解密,这里就来分享一下非对称加密算法的代表:RSA加解密。

在Go语言中实现RSA加解密还是比较简单的,网上很多教程都是基于Go原生标准库写的,代码量较多。这里分享一个好用的库:https://github.com/forgoer/openssl

go get https://github.com/forgoer/openssl
GoLang 2022年12月09日 723

工作中常用的git命令

今天又加班了,趁睡前10分钟,抽空记录一下git常用命令。

git是程序开发人员必不可少的工具,前一天在v站看到有人吐槽几年经验的前端不会git

其实也没什么,只是一个工具而已,可能人家之前的工作并不需要git罢了。对于一般开发者而言,掌握几个基本的git命令就够用了。

工具 2022年11月22日 1206

如何在Ubuntu上安装快速安装PHP?

快速安装,到底有多快?

这里以目前最新的PHP8.2为例,我的电脑尝试了一些10分钟之内搞定,如果网络好可能更快。

PPA个人软件包存档(Personal Package Archive)是一项服务,允许用户上传使用Launchpad构建和发布的Ubuntu源软件包作为apt信息库。

PHP 2022年11月02日 1094

Go语言中实现HmacSHA256加密算法

HmacSHA256加密算法比较常用的加密算法之一,它比MD5更加安全。HmacSHA256也是微信支付推荐的加密方式。

在Go语言中实现HmacSHA256还是比较简单的,虽然没有PHPhash_hmac一个函数搞定的方式简单,但比起Java中的实现还是简单不少。

package main

import (
    "crypto/hmac"
    "crypto/sha256"
    "encoding/base64"
    "encoding/hex"
    "fmt"
)

// HmacSha256 计算HmacSha256
// key 是加密所使用的key
// data 是加密的内容
func HmacSha256(key string, data string) []byte {
    mac := hmac.New(sha256.New, []byte(key))
    _, _ = mac.Write([]byte(data))

    return mac.Sum(nil)
}

// HmacSha256ToHex 将加密后的二进制转16进制字符串
func HmacSha256ToHex(key string, data string) string {
    return hex.EncodeToString(HmacSha256(key, data))
}

// HmacSha256ToHex 将加密后的二进制转Base64字符串
func HmacSha256ToBase64(key string, data string) string {
    return base64.URLEncoding.EncodeToString(HmacSha256(key, data))
}

func main() {
    // secret 是加密要使用的key
    // apple 是要加密的内容
    fmt.Printf("HmacSha256转16字符串: %s\n", HmacSha256ToHex("secret", "apple"))
    fmt.Printf("HmacSha256转base字符串: %s\n", HmacSha256ToBase64("secret", "apple"))
}
GoLang 2022年10月09日 1318

排行

解决方案

网站建设

专业企业官网建设,塑造企业形象,传递企业价值

系统开发

系统软件开发,用心思考,用心设计,用心体验

技术支撑

打破技术瓶颈,让不堪重负的项目起死回生

业务中台

构建全渠道一体化运营能力,实现全链路数字化

文案策划

文案撰写、营销策划,专注品牌全案

新媒体运营

一站式解决企业互联网营销痛点和难题

以技术的力量,改变互联网

联系我们
鄂ICP备19028750号-1 @copyright 2026 tech1024.com