当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Security JWT身份验证中检查用户角色并获得经过身份验证的用户名

贡可人
2023-03-14

我正在研究使用JWT身份验证的Spring Security实现。我不确定如何检查用户角色并在方法级别获得经过身份验证的用户。我在网上看到这个例子:

@PostMapping("{id}")
@Secured({"ROLE_ADMIN"})
public ResponseEntity<?> save(Authentication authentication, Principal principal, @PathVariable Integer id, @RequestBody UserNewDTO dto) {
    ........
}

我需要从JWT令牌中提取用户类型吗?还有其他方法可以实现吗?在我看来,仅使用@securited({“role_admin”})是不完整的。

看起来这段代码是用来获得用户如果使用会话类型,我得到NPE。你知道对于JWT我如何才能成为用户吗?

Github完整来源:https://Github.com/rcbandit111/oauth2/blob/master/src/main/java/org/engine/rest/datapagescontroller.java

共有1个答案

边明煦
2023-03-14

这个链接解释了关于JWT身份验证的一切。下面您可以看到一些示例可以作为修改代码的基础:

@CrossOrigin(origins = "*", maxAge = 3600)
@RestController
@RequestMapping("/api/test")
public class TestController {
  @GetMapping("/all")
  public String allAccess() {
    return "Public Content.";
  }

  @GetMapping("/user")
  @PreAuthorize("hasRole('USER') or hasRole('MODERATOR') or hasRole('ADMIN')")
  public String userAccess() {
    return "User Content.";
  }

  @GetMapping("/mod")
  @PreAuthorize("hasRole('MODERATOR')")
  public String moderatorAccess() {
    return "Moderator Board.";
  }

  @GetMapping("/admin")
  @PreAuthorize("hasRole('ADMIN')")
  public String adminAccess() {
    return "Admin Board.";
  }
}
 类似资料:
  • 我的代码在这里:代码重新发布是因为我想问一个更直接的问题。如何在未经身份验证的用户和经过身份验证的用户之间切换?我的未经验证的文件似乎已缓存,我使用了以下方法: 在我剩下的api代码之前,它仍然不能工作。谢谢你的帮助 注意:我知道它不起作用,因为我在切换配置/凭据提供程序后立即使用lambda进行调用,并且只有授权用户才能调用此方法。 编辑@behrooziAWS答案: API代码: 完整错误:B

  • 在我的REST应用程序中,我使用了基本身份验证(发送用户密码并在每次请求时登录)。对于某些需要,我使用以下方法获得登录用户: 但是后来我实现了Spring-Security-Oaut2,我使用访问令牌代替密码和登录。现在. getMain()方法返回“匿名用户”。所以我的问题:有没有办法像上面在sping-security-oauth中那样以某种方式获取登录用户? 编辑:我发现我的安全性“拦截ur

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 我在学Spring保安。 在浏览了一些教程之后,我发现其中一些使用了UserRole,而一些使用了一个实现身份验证的UserAuthentication类。我尝试实现的一个(并起作用)是创建一个自定义的MyUserDetailsService,它实现UserDetailsService,并授予权限(角色?)像这样: 我想知道用户角色和GrantedAuthorities之间有什么区别(例如,当使用

  • 问题内容: 我有一个Spring Rest服务,我想将其用于经过身份验证和未经身份验证的用户。我想从用户身份验证中获取用户信息。 如果我 在如下所示的ouath2配置中使用,则可以获取经过身份验证的用户的用户信息,但可以获取未经身份验证的用户的401错误。 如果我 像下面 那样通过 in 忽略WebSecurity中的URL ,那么所有用户都可以调用该服务,但是我无法从SecurityContex

  • 我正在尝试在 Swift 中创建一个 iOS 应用程序,该应用程序使用 AWS Lambda 使用以下身份验证服务 - https://github.com/danilop/LambdAuth 它使用适用于 iOS 的 AWS 移动开发工具包与迪纳摩数据库和 Lambda 进行通信 - http://docs.aws.amazon.com/mobile/sdkforios/developergui