spring 权限认证继承哪个filter
-
在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年前 -
在 Spring Security 中,权限认证是通过一系列的过滤器(Filters)来实现的。其中一个关键的过滤器是
UsernamePasswordAuthenticationFilter,它用于处理基于用户名和密码的身份验证。UsernamePasswordAuthenticationFilter是继承自AbstractAuthenticationProcessingFilter的,AbstractAuthenticationProcessingFilter又是继承自OncePerRequestFilter。因此,可以说UsernamePasswordAuthenticationFilter直接继承自AbstractAuthenticationProcessingFilter,间接继承自OncePerRequestFilter。除了权限认证过滤器之外,Spring Security 还有其他的过滤器,用于实现不同的功能。一些常用的过滤器包括:
BasicAuthenticationFilter:用于处理基本身份验证(使用用户名和密码作为凭证)的过滤器。JwtAuthenticationFilter:用于处理基于 JWT(JSON Web Token)的身份验证的过滤器。LogoutFilter:用于处理用户注销的过滤器。CasAuthenticationFilter:用于处理使用 CAS(Central Authentication Service)进行身份验证的过滤器。RememberMeAuthenticationFilter:用于处理 "记住我" 功能的过滤器。
这些过滤器可以根据应用程序的需求进行自定义配置,并且可以在 Spring Security 的配置类中进行设置。通过配置不同的过滤器,可以实现各种不同的身份验证和授权机制。
1年前 -
在 Spring Security 中使用的权限认证过滤器是
UsernamePasswordAuthenticationFilter。这是一个继承自AbstractAuthenticationProcessingFilter的过滤器,用于处理用户的身份认证。下面详细介绍 Spring Security 中权限认证的操作流程。
-
创建一个继承自
WebSecurityConfigurerAdapter的类,并重写其中的configure(HttpSecurity http)方法。该方法用于配置 Spring Security 的安全策略。 -
在
configure(HttpSecurity http)方法中,添加一系列的配置项,包括登录页面、登录请求的处理、权限限制等。 -
在配置登录页面的过程中,需要指定登录表单的提交路径和用户名、密码的参数名。这些参数名将被
UsernamePasswordAuthenticationFilter使用。 -
在自定义的
WebSecurityConfigurerAdapter类中,重写configure(AuthenticationManagerBuilder auth)方法,用于指定用户的身份验证方式。 -
在
configure(AuthenticationManagerBuilder auth)方法中,可以使用UserDetailsService或AuthenticationProvider进行身份验证。其中,UserDetailsService是一个接口,定义了通过用户名加载用户信息的方法;AuthenticationProvider是一个接口,定义了自定义身份验证的方式。 -
在
configure(AuthenticationManagerBuilder auth)方法中,需要将UserDetailsService或AuthenticationProvider注册到AuthenticationManagerBuilder中,以便在用户身份验证时使用。
通过以上步骤,我们配置了权限认证的一系列操作。当用户访问受保护的资源时,会先经过
UsernamePasswordAuthenticationFilter进行身份验证。该过滤器会根据配置的登录表单的提交路径和参数名,获取用户的用户名和密码,并进行身份验证。在进行身份验证的过程中,会使用之前配置的
UserDetailsService或AuthenticationProvider来获取用户信息,并将用户信息与输入的用户名密码进行比对。如果验证成功,用户将被授权访问受保护的资源。如果验证失败,用户将重定向到登录页面。
需要注意的是,通过继承
UsernamePasswordAuthenticationFilter,我们可以自定义一些认证过程中的行为,例如自定义认证成功后的跳转页面、自定义认证失败后的跳转页面等。这些自定义的操作可以通过重写successfulAuthentication和unsuccessfulAuthentication方法来实现。1年前 -