equidna / caronte-client
Caronte认证客户端
Requires
- php: ^8.0
- equidna/toolkit: ^0.1.1
- illuminate/support: ^11.21
- lcobucci/clock: ^3.2
- lcobucci/jwt: ^5.3
Requires (Dev)
- illuminate/support: ^11.21
- laravel/framework: ^11.21
- laravel/helpers: ^1.7
README
Caronte是一个基于JWT令牌的认证系统,由Laravel编写。此客户端消耗Caronte API以对其他系统进行认证,并提供两个中间件来验证用户访问。
配置
Caronte使用环境变量来自定义配置,以下是可以配置的选项。
路由
中间件
ValidateSession
主类:Equidna\Caronte\Http\Middleware\ValidateSession 别名:Caronte.ValidateSession
验证用户是否使用有效的JWT令牌进行了认证,并且与配置中提供的CARONTE_APP_ID关联的任何权限相关。
Route::put('/dashboard', function (string $id) { // ... })->middleware('Caronte.ValidateSession');
如果令牌已过期,则在验证过程中自动续订,在这种情况下,新的令牌将可在名为new_token的响应头中找到。
ValidateRoles
主类:Equidna\Caronte\Http\Middleware\ValidateRoles 别名:Caronte.ValidateRoles 参数:要验证的权限的逗号分隔列表或数组
验证用户是否具有提供的任何角色。root 角色始终添加到列表中,因此具有root角色的用户将始终被视为有效。
Route::put('/users', function (string $id) { // ... })->middleware('Caronte.ValidateRoles:administrator,manager');
辅助工具
此包提供辅助类以简化与用户的一些常见操作,所有方法都设计为静态调用。
Equidna\Caronte\Helpers\CaronteUserHelper
-
getUserName(string $uri_user):string 返回与关联URI关联的用户名称
-
getUserEmail(string $uri_user):string 返回与关联URI关联的用户电子邮件
-
getUserMetadata(string $uri_user, string $key):string 返回提供的键和uri_user的元数据值
Equidna\Caronte\Helpers\PermissionHelper
-
hasApplication():bool 验证当前用户是否与任何与CARONTE_APP_ID关联的角色相关
-
hasRoles(mixed $roles):bool 验证当前用户是否具有提供的任何角色 $roles可以提供为值的逗号分隔列表或数组,root角色始终添加到列表中,因此具有root角色的用户将始终返回true。
外观
Equidna\Caronte
-
getToken():Plain 返回表示正在使用的令牌的Lcobucci\JWT\Token\Plain
-
getUser():stdClass|null 返回表示为令牌签发的用户的stdClass或null,如果解码过程中出现任何错误
-
getRouteUser():string 返回路由中的{uri_user}部分或空字符串,如果没有在路由中找到{uri_user}
-
saveToken(string $token_str):void @param $token*string 将提供的令牌字符串存储在服务器的tokens文件夹中,并将文件id存储在名为*caronte_token*的cookie中
-
clearToken():void 清除caronte_token cookie并删除存储用户令牌的关联文件
-
setTokenWasExchanged():void 设置一个标志,指示令牌在验证过程中已过期并已交换
-
tokenWasExchanged():bool 如果在验证过程中令牌已交换,则返回true
-
echo(string $message):string 返回提供的消息