标签: interceptor

真正的拦截器对我的c#类做了什么?

我被要求在我的asp.net Web应用程序中实现城堡动态代理,我正在阅读几篇文章,我从Castle ProjectCode Project获得了关于asp.net web应用程序中的城堡动态代理....

这两篇文章都与创建拦截器有关,但是我无法理解为什么拦截器会与类一起使用....为什么我要拦截行为正常的类?

c# castle-dynamicproxy class interceptor

12
推荐指数
1
解决办法
2万
查看次数

如何在Spring中拦截静态方法?

主题行基本上都说明了一切.我有一个静态方法,我想拦截,以便可以应用它周围的建议.我可以使用任何非静态方法,但我不确定如何允许拦截静态方法.

java aop spring interceptor

12
推荐指数
1
解决办法
9893
查看次数

没有使用拦截器绑定调用拦截器方法

我正在使用Java EE 6和Jboss AS7.1并尝试使用拦截器绑定(来自jboss站点的示例).

我有一个InterceptorBinding注释:

@InterceptorBinding
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface GeoRestrictedEquipment {
}
Run Code Online (Sandbox Code Playgroud)

拦截器:

@GeoRestrictedEquipment
@Interceptor
public class GeoRestrictedEquipmentInterceptor {

    @EJB EquipmentDao equipmenttDao;    
    @EJB SecurityService securityService;    

    @AroundInvoke
    public Object checker(InvocationContext ctx) throws Exception {
        Integer id = (Integer) ctx.getParameters()[0];
        Equipment equipment = equipmenttDao.findById(id);
        GeoChecker.check(equipment.getSite(), securityService.getUser());

        return ctx.proceed();
    }
}
Run Code Online (Sandbox Code Playgroud)

还有一个豆子:

@Stateless
@LocalBean
@SecurityDomain(Realm.NAME)
@RolesAllowed({ Roles.REGISTERED })
public class PumpService implements PumpServiceLocal {

    @Override
    @GeoRestrictedEquipment
    public PumpInfos getPumpInfos(Integer pumpId) {
        /* ... */
    }
}
Run Code Online (Sandbox Code Playgroud)

但拦截器没有被调用......我从这个例子中错过了什么? …

java ejb interceptor java-ee-6

12
推荐指数
2
解决办法
1万
查看次数

在Spring-mvc拦截器中,如何访问处理程序控制器方法?

在Spring-mvc拦截器中,我想访问处理程序控制器方法

public class CustomInterceptor implements HandlerInterceptor  {
    public boolean preHandle(
        HttpServletRequest request,HttpServletResponse response, 
            Object handler) {

        log.info(handler.getClass().getName()); //access to the controller class
        //I want to have the controller method
        ...
        return true;
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

我已经找到 :

如何对获得控制器,方法名,在弹簧拦截-prehandle法

但它只能解决.我希望方法名称可以访问注释.

java spring-mvc interceptor

12
推荐指数
2
解决办法
1万
查看次数

Angular Jasmine测试反应拦截器

我正在尝试测试我的响应拦截器,但我很难搞清楚如何模拟$ window对象.这是我的拦截器代码:

'use strict';

angular.module('Domain.handlers')

.config(function($httpProvider) {
  $httpProvider.responseInterceptors.push('UnauthorizedInterceptor');
})

.factory('UnauthorizedInterceptor', function($q, $injector, $window, ENV) {
  return function(promise) {
    var success = function(response) { return response; };
    var error   = function(response) {
      if (response.status === 401) {
        $window.location.href = ENV.account + '/oauth/authorize?client_id=' + ENV.clientId + '&redirect_uri=' + ENV.app + '/oauth/callback&response_type=token';
      }
      return $q.reject(response);
    };
    return promise.then(success, error);
  };
});
Run Code Online (Sandbox Code Playgroud)

这是我的规格:

'use strict';

describe('Domain.handlers.response', function() {
  var UnauthorizedInterceptor,
      httpProvider,
      $httpBackend,
      $http,
      token = '123456789';

  beforeEach(module('Domain.handlers', function($httpProvider) {
    httpProvider = $httpProvider;
  }));

  beforeEach(inject(function(_UnauthorizedInterceptor_, …
Run Code Online (Sandbox Code Playgroud)

testing response interceptor jasmine angularjs

12
推荐指数
1
解决办法
9907
查看次数

拦截器和装饰器之间的区别

Java中的拦截器和装饰器之间是否存在任何差异?严格来说,我可以使用装饰器实现一些拦截器无法实现的东西,反之亦然吗?

除了我必须检查方法名称以在拦截器中添加特定于方法的行为的问题:

拦截器:

@Nice
@Interceptor
public class NiceGreeterInterceptor {
  @AroundInvoke
  public Object decorate(InvocationContext ic) throws Exception {
    Method method = ic.getMethod();
    String methodName = method.getName();
    Object result = ic.proceed();
    if (methodName.equals("greet")) {
      return "NEW " + result;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

装饰:

@Decorator
public class GreeterDecorator implements Greeter {
  @Inject
  @Any
  @Delegate
  private Greeter greeter;

  @Override
  public String greet() {
    return "NEW " + greeter.greet();
  }
}
Run Code Online (Sandbox Code Playgroud)

或者说我可以用拦截器重现装饰器的所有行为是合法的,但是使用装饰器会更舒服吗?

java design-patterns decorator java-ee interceptor

12
推荐指数
2
解决办法
5400
查看次数

如何排除一些服务,如登录,从拦截器Angular 5,HttpClient注册

我想用拦截器排除一些服务.

app.module.js

providers: [
    UserService,
    RolesService,
    {
        provide: HTTP_INTERCEPTORS,
        useClass: TokenInterceptor,
        multi: true
      },
],
Run Code Online (Sandbox Code Playgroud)

Login.service.ts

return this.httpClient.post(this.appUrl + '/oauth/token', body.toString(), { headers, observe: 'response' })
.map((res: Response) => {
  const response = res.body;
  this.storeToken(response);
  return response;
})
.catch((error: any) => {
  ErrorLogService.logError(error);
  return Observable.throw(new Error(error.status));
  });
}
Run Code Online (Sandbox Code Playgroud)

interceptor typescript angular angular-httpclient

12
推荐指数
2
解决办法
1万
查看次数

如何在Angular拦截器内向请求体添加内容?

在这里我可以修改标题,因为有关于此功能的多个教程,但是:

@Injectable()
export class MyFirstInterceptor implements HttpInterceptor {

    constructor(private currentUserService: CurrentUserService) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        console.log(JSON.stringify(req));

        const token: string = this.currentUserService.token;

        if (token) {
            req = req.clone({ headers: req.headers.set('Authorization', 'Bearer ' + token) });
        }

        if (!req.headers.has('Content-Type')) {
            req = req.clone({ headers: req.headers.set('Content-Type', 'application/json') });
        }

        req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
        return next.handle(req);
    }
}
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,有一个令牌,我需要添加请求正文而不是请求标题,所以有任何方法来修改正文.

更新:Mild Fuzz的方法适用于简单的帖子请求,但我想添加查询,如果它是GET请求和正文,如果它允许添加正文.最重要的是,当我尝试发送表单数据时它就破了....request.body删除表单数据并将其转换为JSON对象,以便我的图像消失.

javascript api interceptor angular

12
推荐指数
2
解决办法
3462
查看次数

在 Axios 中自定义日期序列化

默认情况下,当 JavaScript 对象包含 Date 对象时,Axios 将其序列化为 UTC。这意味着传输的时间是使用时区进行转换的。这不适用于我的用例。我需要将没有时区转换的时间发送为 UTC。

我基于#1548实现了自定义序列化器,但没有效果。我已经验证配置正在被修改,但是当我查看请求负载时,日期仍然使用 UTC (2022-02-03T04:59:00.000Z)。

注意:我的逻辑比较复杂,我在下面的代码中使用 toLocalString() 来简化示例。

const a = axios.create()
a.interceptors.request.use((config) => {
  config.paramsSerializer = (params) =>
    qs.stringify(params, {
      serializeDate: (date: Date) => date.toLocaleString(),
    })
  return config
})
Run Code Online (Sandbox Code Playgroud)

有人理解为什么我不能覆盖默认行为并使用我自己的日期格式吗?

环境axios版本0.21.1

javascript utc interceptor typescript axios

12
推荐指数
1
解决办法
2万
查看次数

如何在Guice中定义方法拦截器的顺序?

有时候需要知道拦截Guice中方法调用的方法拦截器的顺序.一个简单的示例场景是使用guice-persist提供的@Transactional方法拦截器和自定义的@Retry方法拦截器.重试拦截器必须在事务拦截器之外运行,以确保重试不在同一事务中执行.

在Spring中,您可以使用拦截器的Ordered接口来确保在重试拦截器中执行事务拦截器.有没有办法在Guice中实现同样的目标?

methods aop guice interceptor

11
推荐指数
1
解决办法
2302
查看次数