有没有办法在Spring AOP中获取被拦截方法的调用者(MVC更具体)?我有两个方法说“callerM1()”和“callerM2()”,它们调用了一个被拦截的方法“method()”。然后我有一个这样的方面:
@Before("execution(* *.method(..)) && args(arg1)")
public Object doSomething(...){
//find out which one and do something
}
Run Code Online (Sandbox Code Playgroud)
如何仅使用 Spring AOP 功能来了解“callerM1()”或“callerM2()”中的哪一个调用了“method()”?在这里我也可以使用 around 建议,但我想这是一个不同的问题。我检查了各种可能性,包括 EnclosureStaticPart 和更改切入点定义但没有成功。
一个快速的解决方案是使用 StackTraceElement,但我认为这不是一个好的解决方案。
我正在尝试开发一个使用 Authlib OAuth2 服务器获取刷新令牌的简单工具,但此处的示例服务器不发出刷新令牌。当我打印令牌时,我得到以下信息:
{'access_token': '....', 'scope': 'profile', 'token_type': 'Bearer', 'expires_in': 864000, 'expires_at': 1532191887}
Run Code Online (Sandbox Code Playgroud)
流程是此处提到的授权代码;首先我处理同意部分:
client_id = '...'
client_secret = '.....'
scope = '...'
session = OAuth2Session(client_id, client_secret, scope=scope)
authorize_url = '.../oauth/authorize'
uri, state = session.authorization_url(authorize_url)
Run Code Online (Sandbox Code Playgroud)
然后我尝试获取令牌:
urlset = '.../?code=...&state=...'
access_token_url = '.../oauth/token'
token = session.fetch_access_token(access_token_url,authorization_response=urlset)
Run Code Online (Sandbox Code Playgroud)