当前位置: 首页 > news >正文

vi设计网站排行榜wordpress主题demo

vi设计网站排行榜,wordpress主题demo,建立网站 英语怎么说,120平米装修10万够吗spring security 使用的过滤器还是拦截器 Spring Security 是一个强大的安全框架,用于保护 Java 应用程序。它主要使用过滤器(Filters)来实现安全功能,而不是拦截器(Interceptors)。不过,它也提…

spring security 使用的过滤器还是拦截器

Spring Security 是一个强大的安全框架,用于保护 Java 应用程序。它主要使用过滤器(Filters)来实现安全功能,而不是拦截器(Interceptors)。不过,它也提供了一些拦截器扩展功能,可以在某些场景下与 Spring MVC 拦截器配合使用。

Spring Security 的过滤器

Spring Security 主要通过一系列的过滤器来处理安全性。这些过滤器被组织成一个过滤器链,这个链会在每个 HTTP 请求到达实际处理代码之前进行处理。常见的过滤器有:

  • SecurityContextPersistenceFilter:管理 SecurityContext 的生命周期。
  • UsernamePasswordAuthenticationFilter:处理基于表单的登录。
  • BasicAuthenticationFilter:处理 HTTP 基本认证。
  • ExceptionTranslationFilter:捕获安全异常,将其转化为符合客户端期望的响应。
  • FilterSecurityInterceptor:最终进行访问控制决策。

配置 Spring Security 过滤器链

Spring Security 的过滤器链默认通过 DelegatingFilterProxy 进行配置,通常可以在 Spring 的配置类中自定义和扩展。

XML 配置

如果你使用 XML 配置,可以通过 web.xml 配置 DelegatingFilterProxy

<filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern>
</filter-mapping><beans:beans xmlns="http://www.springframework.org/schema/security"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><http><!-- 配置安全规则 --></http>
</beans:beans>
Java 配置

使用 Java 配置,通过继承 WebSecurityConfigurerAdapter 并重写其方法来自定义安全配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin().loginPage("/login").permitAll().and().logout().permitAll();}
}

Spring Security 拦截器

Spring Security 也提供了对拦截器的支持,比如方法级别的安全性(Method Security),可以通过注解来实现,如 @PreAuthorize@PostAuthorize

方法级别安全配置
启用方法级别的安全性

通过在配置类中启用方法级别的安全性:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MethodSecurityConfig {// 配置方法级别安全性
}
使用注解进行方法级别的安全控制
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Service;@Service
public class MyService {@PreAuthorize("hasRole('ROLE_USER')")public void userMethod() {// 只有角色为 ROLE_USER 的用户才能访问此方法}@PreAuthorize("hasRole('ROLE_ADMIN')")public void adminMethod() {// 只有角色为 ROLE_ADMIN 的用户才能访问此方法}
}

主要区别

  1. 使用场景
    • 过滤器:Spring Security 主要使用过滤器来处理整体的请求/响应安全。
    • 拦截器:拦截器主要用于更多细粒度的控制,如方法级别的安全性。
  2. 实现机制
    • 过滤器:是 Servlet 规范的一部分,负责在请求进入和响应离开 Web 容器时进行处理。过滤器在 Servlet 容器级别工作,先于所有 Spring 组件执行。拦截器在 Spring MVC 的处理流程中执行,在控制器(Controller)处理请求前后。
    • 拦截器:拦截器是基于 Spring 的 AOP(面向切面编程), 在 HandlerMappingHandlerAdapter 的工作范围内。通常是通过框架提供的机制实现,如 Spring MVC 的HandlerInterceptor。拦截器仅作用于被 Spring MVC 管理的 Controller 请求。
  3. 配置方式
    • 过滤器:通过 DelegatingFilterProxyspringSecurityFilterChain 进行配置。
    • 拦截器:通过注解 @EnableGlobalMethodSecurity 和相关安全注解进行配置。
  4. 拦截器适用场景
    • 对特定的 Controller 请求处理前后进行拦截或者封装。
    • 拦截器不具备认证、授权的过滤能力,因为它工作在处理层,而非请求链路的入口层。
    • 过滤器适合处理请求和响应的通用逻辑(如字符编码、CORS等)
    • 拦截器更适合与 Spring 框架集成的功能(如方法级别的权限验证、方法级别的日志记录等)

总结

Spring Security 主要通过过滤器链实现请求和响应的安全处理,但也提供了方法级别的安全控制支持,允许你通过拦截器和注解来进行细粒度的安全控制。过滤器用于全局的 HTTP 请求安全管理,而拦截器则用于更具体的方法级别的权限控制。

Spring Security 主要是通过过滤器链处理请求(身份认证、权限校验等核心操作),而不是使用拦截器。但在特定情况下,拦截器可以配合 Spring Security 完成一些额外的逻辑处理,比如记录审计日志、扩展特定的请求处理行为等。


过滤器 拦截器

public class PerformanceFilter implements Filter {

public class PerformanceInterceptor implements HandlerInterceptor {

过滤器(Filters)和拦截器(Interceptors)是 Java Web 开发中常用的两种机制,用于在请求到达控制器之前或响应返回客户端之前进行预处理或后处理。虽然它们都可以用于类似的目的,但在实现机制和应用场景上有所不同。

过滤器(Filters)

过滤器是 Servlet API 的一部分,主要用于对 HTTP 请求和响应进行预处理和后处理。过滤器可以拦截和修改请求和响应,但不会修改实际的控制器处理逻辑。

使用场景
  • 检查或修改请求参数
  • 进行身份验证和授权
  • 记录日志
  • 数据压缩或加密
示例代码

下面是一个简单的过滤器,它记录每个请求的处理时间:

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(urlPatterns = "/*")
public class PerformanceFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化代码}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {long startTime = System.currentTimeMillis();chain.doFilter(request, response);long endTime = System.currentTimeMillis();System.out.println("Request processed in " + (endTime - startTime) + " ms");}@Overridepublic void destroy() {// 销毁代码}
}
配置

可以使用 @WebFilter 注解或在 web.xml 文件中配置过滤器。上面的例子使用的是 @WebFilter 注解。

拦截器(Interceptors)

拦截器通常是框架(如 Spring MVC)提供的机制,不是 Servlet API 的一部分。它用于在控制器方法调用之前和之后进行处理。拦截器比过滤器更强大,可以访问更多的信息,如控制器方法参数,返回值等。

使用场景
  • 用户认证和授权
  • 日志记录和分析
  • 统一异常处理
  • 数据格式转换
示例代码

以下是一个简单的 Spring MVC 拦截器,用于记录每个请求的处理时间:

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class PerformanceInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {request.setAttribute("startTime", System.currentTimeMillis());return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {long startTime = (Long) request.getAttribute("startTime");long endTime = System.currentTimeMillis();System.out.println("Request processed in " + (endTime - startTime) + " ms");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {// 完成处理}
}
配置

在 Spring MVC 中,你需要将拦截器注册到 WebMvcConfigurer

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new PerformanceInterceptor()).addPathPatterns("/**");}
}

主要区别

  1. 实现机制

    • 过滤器是 Servlet API 的一部分,可以应用于所有的 Servlet 请求。
    • 拦截器通常是框架(如 Spring MVC)提供的功能,主要用于控制器方法的调用。
  2. 使用范围

    • 过滤器可以应用于整个应用程序,无论是静态资源还是动态请求。
    • 拦截器通常只处理控制器方法的请求。
  3. 访问权限

    • 过滤器只能访问请求和响应对象,无法访问控制器方法的参数和返回值。
    • 拦截器可以访问控制器方法的参数和返回值,具有更高的灵活性。
  4. 配置方式

    • 过滤器可以在 web.xml 文件中配置,也可以使用注解。
    • 拦截器需要在框架配置文件中注册或使用代码进行配置。

总结

过滤器和拦截器都是预处理和后处理请求的有效机制,各有优缺点和适用的场景。在选择使用哪种机制时,可以根据需要处理的内容和应用程序的具体需求来选择。通常,过滤器适用于全局请求处理,而拦截器更适用于控制器级别的请求处理。

http://www.dtcms.com/a/408831.html

相关文章:

  • 响应式网站div居中网站源码怎么搭建
  • 网络制作公司专业制作网站三个好消息
  • 兰州做网站官方网站建设网站
  • 网站建设深圳官网yy传媒
  • 织梦网站栏目无法生成wordpress建站有广告吗
  • ps网站参考线怎么做wordpress博客 houdini
  • 网站建设评审意见怎样做网站表白墙
  • google网站怎么做流量织梦网站安装dir
  • 地方网站娄底企业网站建设公司
  • 做张家界旅游网站多少钱淘宝网首页电脑版登录入口
  • 网站维护和建设工作范围中小企业网站建设与管理
  • 室内设计案例去什么网站网站开发 项目式说课
  • 网站的规划 建设与分析论文山东网站建站系统平台
  • 网站怎么做定时任务做网上营销怎样推广
  • 做网站编写代码电商平台开发系统
  • 搜狐快站做淘宝客网站有哪些网站做返利模式
  • 网站免费源码大全不用下载手机seo快速排名
  • wordpress企业网站制作视频教程md短视频传媒免费版怎么下载
  • 网站登录账号密码保存深圳罗湖商城网站建设
  • 免费的好网站潍坊做网页的公司
  • 厦门 网站开发新的网站做淘宝客
  • php p2p网站开发网站建设开发费会计处理
  • 深圳市网站设计公做网站搞流量
  • 我的网站要怎样做才能让人家搜到建设公司企业简介
  • 安全的南昌网站制作APP和网站是一样吗
  • phpcms 恢复网站桂林象鼻山
  • 购物网站怎么做代码怎么在中国做网站网站
  • 自适应网站功能公司宣传页设计印刷
  • 建设门户网站都需要什么意思企业内部管理信息系统
  • 网站开发流行工具官方网站的资料做证据