gpt4 book ai didi

java - 建议在 AspectJ 中更改控制流

转载 作者:行者123 更新时间:2023-12-01 17:40:31 25 4
gpt4 key购买 nike

我刚刚开始学习 AspectJ,并且我有一个用例,例如用户登录。如果用户的 session 数据(cookies)与服务器上存储的数据不匹配,我想更改调用的函数。假设我有两个操作:

class HttpServlet { 
public function() {
}
public function2() {
}
public doLogin() {
}
}

我有一些建议,例如:

public aspect UserLoggedIn {

pointcut GreetingServer(): within(HttpServlet);
pointcut requireAuth():
GreetingServer() && execution(* function*(..));
before(): requireAuth() {
if ( notLoggedIn ) {
redirectToDoLoginAndAbortCalledFunction();
}
}
}

那么如何使redirectToDoLoginAndAbortCalledFunction()工作呢?

最佳答案

您将需要使用 around 建议而不是 before 建议,如下所示。下面是一个假设两个方法都返回 boolean 值的示例:

 boolean around(): requireAuth() {
if ( notLoggedIn ) {
return redirectToDoLoginAndAbortCalledFunction();
} else {
return proceed();
}
}

您可能还需要将参数传递给您的建议,您可以通过使用 this()、target() 和 args() 切入点捕获切入点中的正确值来实现这一点。

关于java - 建议在 AspectJ 中更改控制流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com