c# - 选择不使用授权的 AuthenticationScheme
问题描述
身份验证 = 谁在打电话?
授权=他们可以这样做吗?
我的代码中有几个调用AddJwtBearer
。它创建了我支持的几个不同的 JWT 场景。
我也设置了options.DefaultAuthenticateScheme = "MyAuthenticationScheme"
。
当对没有[Authorize]
标签的控制器方法进行调用时,它会将User.Identity
对象设置为在调用AddJwtBearer
for时设置的 JWT 中的数据"MyAuthenticationScheme"
。
但是,如果该 JWT 不存在,则调用将通过并且User.Identity
对象中只有空值。这对我想要的很好。
我希望有一种方法可以在我的控制器中为我的方法添加一个属性,让我无需使用[Authorize]
.
我的理由是我只是想设置“谁在打电话”(身份验证)。现在,我有另一个系统来处理“你能做什么”(授权)。
在每个控制器方法的基础上,有没有办法在不使用[Authorize]
属性的情况下切换 AuthenticationSchemes?
就像是[Authentication (Scheme = "MyOtherAuthenticationScheme")]
解决方案
您应该能够将AllowAnonymous
与您的Authorize
属性一起添加。
[Authorize(AuthenticationSchemes = "Bearer")]
[AllowAnonymous]
推荐阅读
- sql - 如何使用运行总计加快选择查询?
- graphql - 使用 Graphql 查询 API 时出现“无法返回 null”错误?
- git - 区分工作树文件夹的git命令是什么
- amazon-web-services - 如何使用 CloudWatch 事件将 CodeCommit 标签名称传递给 CodePipeline
- javascript - 在普通 JS 脚本之前和之后加载 ES6 模块依赖项
- swift - Firebase 按字母顺序获取数据
- docker - 'artifactory' 的不受支持的 docker v2 存储库请求是什么意思
- javascript - 错误 [Vue 警告]:选项“el”只能在使用 `new` 关键字创建实例期间使用
- c++ - 在特化模板的同时从基类继承类模板的正确方法
- .net - 如何强制 Visual Studio 项目安装程序完成设置?