使用 Spring boot 和 JWT 保护 REST Api

2024-03-19

我正在尝试使用以下方法来保护我的 REST 服务器JWT我已经实现了自己的(这意味着 JWT 中没有 spring 的东西可以自行处理,其他一切都是Spring当然)。

我有这门课:JWTToken implements Authentication.

我有一个过滤器负责设置JWTToken实例位于SecurityContextHolder:

public class JwtFilter extends GenericFilterBean {
public void doFilter(...) {
     ....
     JWTToken token = new JWTToken(jwt); // this init the Authentication object with all the jwt claims
     SecurityContextHolder.getContext().setAuthentication(token);
     ....
}

我还有一个用于调试此问题的资源:

@RequestMapping(
        value = "/protected_resource",
        method = RequestMethod.POST
)
@RolesAllowed("admin")
public RESTResponse<String> debugJwt() {
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); // here I can see that the context is the right one
    return new RESTResponse<>("This was successful", "feedback message", true);
}

我错过了一个谜题,我在任何在线资源中都找不到这个谜题,这就是如何实现WebSecurityConfigurerAdapter特别是configure(HttpSecurity http) metohd.

当我尝试这样做时,例如:

http.authorizeRequests().anyRequest().authenticated()

请求没有通过此,并且资源没有被调用。

我在这里缺少什么?


Your JWTToken类应该实现该方法:

Collection<? extends GrantedAuthority> getAuthorities();

该实现应该返回用户授予的角色的集合,其中之一是“admin”角色,如下所示:

public Collection<? extends GrantedAuthority> getAuthorities() {
    return Collections.singletonList(new SimpleGrantedAuthority("admin"));
}

当然,在您的情况下,您将查询数据库或 JWT 令牌并解析用户角色。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring boot 和 JWT 保护 REST Api 的相关文章

随机推荐

  • 哪些 CSS3 功能仍然需要供应商前缀?

    我记得最常见的需要前缀的功能是诸如flexbox border radius box shadow等等 但现在它们受到支持 随着越来越多的用户转向使用 Chrome 和 Firefox 等功能更强大的浏览器并放弃 IE 现在是否还有尚未完全
  • 从 VBA (MS Access) 解密 PGP 加密文件的最简单方法

    我需要编写代码从 FTP 位置获取 PGP 加密的文件并处理它们 这些文件将使用我的公钥进行加密 我还没有公钥 显然 我需要一个可以在 Microsoft Access 中使用的 PGP 库 您能推荐一款易于使用的吗 我正在寻找不需要大量
  • 在android中加载google plus中特定的可见人

    我已经成功实施了google plus 列出人员活动 public class ListPeopleActivity extends Activity implements PlusClient ConnectionCallbacks Pl
  • 您是否为域模型中的每个公共类定义了一个接口?优点和缺点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Laravel 4 - 子构造函数通过依赖注入调用父构造函数

    我正在使用 Laravel 4 构建一个 CMS 并且我有一个用于管理页面的基本管理控制器 如下所示 class AdminController extends BaseController public function construc
  • 如何使用 mailgun php API 仅将邮件发送到密件抄送? [复制]

    这个问题在这里已经有答案了 我试图仅将邮件发送至密件抄送但无法发送 下面给出的代码对于 To 和 Bcc 可以正常工作 但是当我尝试仅使用 Bcc 发送时 它会失败 我尝试用 To 传递空字符串 但没有成功 我正在使用 mailgun ph
  • 在 location.onPopState() 回调中更改组件属性

    我试图在组件中设置一个标志 以了解用户单击浏览器的 上一页 按钮是否加载视图 当在组件中定义时 fromBackButton 属性设置为 false 在构造函数中我有这样的代码 this location subscribe popStat
  • MongoDB 上限集合和单调递增索引

    在 MongoDB 上限集合中 我是否可以保证 id字段随着插入顺序单调增加 如果没有 我如何查询给定文档之后插入的所有文档 不需要任何索引 因为我应该能够利用它们的自然顺序 ObjectId 的一部分是时间戳 因此 如果 ObjectId
  • System.InvalidOperationException:IDX20803:无法从 .NET 5 的“System.String”获取配置

    我一直在实现 IdentityServer4 来为我的 React 应用程序提供授权 我在本地开发环境中工作 但在部署到 Windows Server 2016 中的 IIS 后遇到问题 我能够通过 connect token 端点生成访问
  • Python 相当于 PHP 的内爆?

    Python 中是否有与 PHP 内爆相当的东西 我已经读入并分割了一组分隔单词 现在我想按随机顺序对它们进行排序 并打印出单词之间有空格 implode 将数组元素与字符串连接起来 http php net manual en funct
  • 在 Windows XP、SP3 上使用 RawCap 嗅探本地主机

    我正在尝试使用 RawCap 来嗅探 Windows 本地主机 然而 与它所宣称的能力相反 它并没有发挥作用 我按如下方式启动它 rawcap 127 0 0 1 回声 pcap 然后我运行我编写的一个 echo TCP 客户端 服务器测试
  • 如何以不同的配置启动 emacs

    我经常遇到以下流行的 emacs 版本 graphene https github com rdallasgray graphene prelude https github com bbatsov prelude emacs live h
  • 返回模拟方法的参数作为结果

    最简单的例子 我有以下方法 public String testMethod String arg 我想模拟这个方法以返回传递的参数作为结果 例如 testMethod aString returns aString testMethod
  • cURL 错误:SSL 对等证书或 SSH 远程密钥不正常 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Using
  • 将 php 变量从一个文件传递到另一个文件?

    我在主文件 main php 中设置了一个变量 并且需要第二个文件 uploads php 来引用第一个文件中设置的变量 它现在返回未定义 第二个文件使用 load 加载到第一个文件中 下面的代码示例 Main php 内容 div div
  • 用于检查 MySQL TABLE LOCK 状态的 Php 脚本

    我使用 mysqldump 进行 MySQL 备份 mysqldump lock tables DB大约2GB 因此mysqldump需要很长时间 如果有人在备份期间尝试访问数据库 我会显示一条消息 数据库正在备份 请在10分钟后返回 我的
  • Android中View和ViewGroup的区别

    和有什么区别View and a ViewGroup在Android编程中 View View对象是 Android 中用户界面 UI 元素的基本构建块 View是一个简单的矩形框 它响应用户的操作 例子是EditText Button C
  • 关于 [base + index*scale + disp] 和 AT&T disp(base,index,scale) 的几个问题

    Intel 和 AT T 语法中内存寻址的一般形式如下 base index scale disp Intel including GAS intel syntax noprefix disp base index scale AT T 我
  • AngularJS 的面向对象方法

    Angular 似乎没有提供内置的解决方案来定义具有属性和方法的类实例 并且需要开发人员来构建它 您认为这样做的最佳做法是什么 如何将其与后端链接 我收集的一些技巧使用工厂服务和命名函数 资料来源 Tuto 1 https medium c
  • 使用 Spring boot 和 JWT 保护 REST Api

    我正在尝试使用以下方法来保护我的 REST 服务器JWT我已经实现了自己的 这意味着 JWT 中没有 spring 的东西可以自行处理 其他一切都是Spring当然 我有这门课 JWTToken implements Authenticat