mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-13 13:53:29 +00:00
after invocation, restore pre-RunAs Authentication regardless of exception that may be thrown by method being intercepted
This commit is contained in:
parent
302ae5a391
commit
ab9e783f79
@ -320,21 +320,24 @@ public abstract class AbstractSecurityInterceptor implements InitializingBean {
|
||||
logger.debug("Switching to RunAs Authentication: "
|
||||
+ runAs.toString());
|
||||
}
|
||||
|
||||
SecureContext origSecureContext = null;
|
||||
try {
|
||||
origSecureContext = (SecureContext) ContextHolder.getContext();
|
||||
context.setAuthentication(runAs);
|
||||
ContextHolder.setContext((Context) context);
|
||||
|
||||
context.setAuthentication(runAs);
|
||||
ContextHolder.setContext((Context) context);
|
||||
|
||||
Object ret = callback.proceedWithObject(object);
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Reverting to original Authentication: "
|
||||
+ authenticated.toString());
|
||||
return callback.proceedWithObject(object);
|
||||
}
|
||||
finally {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Reverting to original Authentication: "
|
||||
+ authenticated.toString());
|
||||
}
|
||||
|
||||
origSecureContext.setAuthentication(authenticated);
|
||||
ContextHolder.setContext(origSecureContext);
|
||||
}
|
||||
|
||||
context.setAuthentication(authenticated);
|
||||
ContextHolder.setContext((Context) context);
|
||||
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
if (logger.isDebugEnabled()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user