authentication - 需要对(几乎)每个使用 ServiceStack 的请求进行身份验证
问题描述
我正在使用 ServiceStack 构建一个 ERP,并连接了身份验证并正常工作。但是,我想要求对基本上每条路由、DTO 或静态页面进行身份验证——登录页面和支持资源(CSS、图像)除外。
有没有一种简单、集中的方式来做到这一点?我可以申请[Authenticate]
每条 DTO/路线,但很容易错过一个。
我如何要求对所有请求进行身份验证,节省一些?我怀疑某种形式的全局请求过滤器,但我不知道如何开始。
解决方案
@mythz 的解决方案是最正确的,但在我的情况下,我有一些我最初没有询问的特定附加标准。也就是说,我想允许Authenticate
请求,并将用户重定向到登录页面。我正在使用自定义身份验证提供程序ServiceStack.Authentication.Azure,因此我最终得到了 303 Redirect 而不是 403 Fail (或更恰当地说,401 Unauthorized),以使其与我的 OAuth 样式提供程序一起使用。
this.GlobalRequestFilters.Add((req, res, requestDto) =>
{
if (!req.IsAuthenticated() && !(requestDto is Authenticate))
{
res.RedirectToUrl("/auth/aadgraph?redirect=" + req.RawUrl.UrlEncode());
res.EndRequest();
}
});
推荐阅读
- javascript - CSS - 在 ul 中使用 flex-direction 附加 li 标签:column-reverse 无法正常工作
- cryptography - Sage,Goppa 代码:无法创建具有大参数的解码器
- delphi - Delphi 10.4.2 Mainform 关闭 QuickReport 预览后消失
- javascript - 如何在Javascript中有条件地过滤多个字段
- uipath-studio - 我可以将 uipath 应用程序从桌面移动到云端吗?
- python - 从 UI 执行 Linux 命令(Html 页面)
- angular - Renderer2 避免了 Angular 组件的变化
- c++ - 用户名“白名单”检查
- python - 带有 load_workbook 的 BadZipFile
- scala - Scala 未来进入 Verx 未来