spring 权限认证继承哪个filter

worktile 其他 24

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Spring框架中,权限认证是通过Filter实现的。具体来说,Spring Security是Spring框架的一部分,它提供了一套完整的安全认证和授权解决方案。在Spring Security中,权限认证是通过继承一个特定的Filter来实现的。

    继承的是DelegatingFilterProxy。这是一个特殊的Filter,它主要负责将过滤器的调用委托给Spring容器中定义的一个或多个过滤器Bean。

    DelegatingFilterProxy的作用是将来自Servlet容器的过滤器请求转发给Spring应用上下文中的相应过滤器Bean。在权限认证中,我们可以通过继承DelegatingFilterProxy来实现自定义的权限过滤器。

    具体来说,继承DelegatingFilterProxy后,我们需要重写其父类的doFilter()方法,并在其中实现我们的权限认证逻辑。可以通过在doFilter()方法中调用另外一个实现了Filter接口的自定义过滤器来实现权限认证。

    需要注意的是,在Web应用的web.xml或者使用注解配置过滤器时,需要将继承DelegatingFilterProxy的过滤器配置在Spring Security过滤器链的前面,以保证权限认证在其他过滤器之前进行。

    综上所述,权限认证可以通过继承DelegatingFilterProxy实现,该过滤器负责将过滤器请求转发给Spring容器中定义的一个或多个过滤器Bean。通过重写doFilter()方法,并结合其他过滤器实现自定义的权限认证逻辑。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在 Spring Security 中,权限认证是通过一系列的过滤器(Filters)来实现的。其中一个关键的过滤器是 UsernamePasswordAuthenticationFilter,它用于处理基于用户名和密码的身份验证。

    UsernamePasswordAuthenticationFilter 是继承自 AbstractAuthenticationProcessingFilter 的,AbstractAuthenticationProcessingFilter 又是继承自 OncePerRequestFilter。因此,可以说 UsernamePasswordAuthenticationFilter 直接继承自 AbstractAuthenticationProcessingFilter,间接继承自 OncePerRequestFilter

    除了权限认证过滤器之外,Spring Security 还有其他的过滤器,用于实现不同的功能。一些常用的过滤器包括:

    1. BasicAuthenticationFilter:用于处理基本身份验证(使用用户名和密码作为凭证)的过滤器。
    2. JwtAuthenticationFilter:用于处理基于 JWT(JSON Web Token)的身份验证的过滤器。
    3. LogoutFilter:用于处理用户注销的过滤器。
    4. CasAuthenticationFilter:用于处理使用 CAS(Central Authentication Service)进行身份验证的过滤器。
    5. RememberMeAuthenticationFilter:用于处理 "记住我" 功能的过滤器。

    这些过滤器可以根据应用程序的需求进行自定义配置,并且可以在 Spring Security 的配置类中进行设置。通过配置不同的过滤器,可以实现各种不同的身份验证和授权机制。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在 Spring Security 中使用的权限认证过滤器是 UsernamePasswordAuthenticationFilter。这是一个继承自AbstractAuthenticationProcessingFilter的过滤器,用于处理用户的身份认证。

    下面详细介绍 Spring Security 中权限认证的操作流程。

    1. 创建一个继承自WebSecurityConfigurerAdapter的类,并重写其中的configure(HttpSecurity http)方法。该方法用于配置 Spring Security 的安全策略。

    2. configure(HttpSecurity http) 方法中,添加一系列的配置项,包括登录页面、登录请求的处理、权限限制等。

    3. 在配置登录页面的过程中,需要指定登录表单的提交路径和用户名、密码的参数名。这些参数名将被 UsernamePasswordAuthenticationFilter 使用。

    4. 在自定义的 WebSecurityConfigurerAdapter 类中,重写 configure(AuthenticationManagerBuilder auth) 方法,用于指定用户的身份验证方式。

    5. configure(AuthenticationManagerBuilder auth) 方法中,可以使用 UserDetailsServiceAuthenticationProvider 进行身份验证。其中,UserDetailsService 是一个接口,定义了通过用户名加载用户信息的方法;AuthenticationProvider 是一个接口,定义了自定义身份验证的方式。

    6. configure(AuthenticationManagerBuilder auth) 方法中,需要将 UserDetailsServiceAuthenticationProvider 注册到 AuthenticationManagerBuilder 中,以便在用户身份验证时使用。

    通过以上步骤,我们配置了权限认证的一系列操作。当用户访问受保护的资源时,会先经过 UsernamePasswordAuthenticationFilter 进行身份验证。该过滤器会根据配置的登录表单的提交路径和参数名,获取用户的用户名和密码,并进行身份验证。

    在进行身份验证的过程中,会使用之前配置的 UserDetailsServiceAuthenticationProvider 来获取用户信息,并将用户信息与输入的用户名密码进行比对。

    如果验证成功,用户将被授权访问受保护的资源。如果验证失败,用户将重定向到登录页面。

    需要注意的是,通过继承 UsernamePasswordAuthenticationFilter,我们可以自定义一些认证过程中的行为,例如自定义认证成功后的跳转页面、自定义认证失败后的跳转页面等。这些自定义的操作可以通过重写 successfulAuthenticationunsuccessfulAuthentication 方法来实现。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部