【问题标题】:when user deleted, delete user's token当用户删除时,删除用户的令牌
【发布时间】:2021-11-06 16:05:04
【问题描述】:

假设有一个用户在我们的系统上注册,并且在一段时间后,管理员或我等从数据库中删除了该用户,但该用户有一个 jwt 令牌,该用户可以向与 USER 角色相关的所有服务发送请求.我想要你的是实现一个过滤器来过滤我们系统中没有真实用户的令牌。

我如何处理这个问题?

【问题讨论】:

  • 如果没有您系统的更多细节,很难说。乍一看,即使用户拥有 JWT,您可能仍想对用户进行身份验证。其他选项包括减少 JWT 的有效时间,以及使用其他方式进行身份验证和 JWT 进行授权(身份验证和授权将关注点分开)
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 伙计们,你们看不到绿色勾号吗?评论已经解决了我的问题。那么,您的评论是什么意思?

标签: java spring mongodb jwt


【解决方案1】:

在控制器中执行代码之前添加验证令牌工作流。

REST (JWT) -> 验证层(jwt 令牌已过期 || 用户不存在)-> 控制器(进程)

对于每个框架,我们都有不同的做法。 示例 Java Spring Boot https://www.javainuse.com/spring/boot-jwt

我们可以定义

class JwtRequestFilter extends OncePerRequestFilter


...

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        // We don't need CSRF for this example
        httpSecurity.csrf().disable()
                // dont authenticate this particular request
                .authorizeRequests().antMatchers("/authenticate").permitAll().
                // all other requests need to be authenticated
                anyRequest().authenticated().and().
                // make sure we use stateless session; session won't be used to
                // store user's state.
                exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

        // Add a filter to validate the tokens with every request
        httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
    }

}

所以对我们应用程序的每个请求都会进入请求过滤器并检查令牌

【讨论】:

  • 我应该为我的 JwtRequestFilter 类创建一个类似 isTokenHasUser 的方法吗?
  • 您可以@UlaşMÜEZZİNOĞLU - 您可以查询数据库以检查用户是否存在并返回403 Forbidden
猜你喜欢
  • 2021-03-07
  • 2021-09-16
  • 2021-10-19
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2014-05-01
  • 1970-01-01
  • 2021-10-09
相关资源
最近更新 更多