Support getUserPrincipal().
This commit is contained in:
parent
0be77abe75
commit
834f69168d
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -21,6 +21,8 @@ import net.sf.acegisecurity.UserDetails;
|
||||||
import net.sf.acegisecurity.context.ContextHolder;
|
import net.sf.acegisecurity.context.ContextHolder;
|
||||||
import net.sf.acegisecurity.context.SecureContext;
|
import net.sf.acegisecurity.context.SecureContext;
|
||||||
|
|
||||||
|
import java.security.Principal;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletRequestWrapper;
|
import javax.servlet.http.HttpServletRequestWrapper;
|
||||||
|
|
||||||
|
@ -88,6 +90,22 @@ public class ContextHolderAwareRequestWrapper extends HttpServletRequestWrapper
|
||||||
return isGranted(role);
|
return isGranted(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the <code>Authentication</code> (which is a subclass of
|
||||||
|
* <code>Principal</code>), or <code>null</code> if unavailable.
|
||||||
|
*
|
||||||
|
* @return the <code>Authentication</code>, or <code>null</code>
|
||||||
|
*/
|
||||||
|
public Principal getUserPrincipal() {
|
||||||
|
Authentication auth = getAuthentication();
|
||||||
|
|
||||||
|
if ((auth == null) || (auth.getPrincipal() == null)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return auth;
|
||||||
|
}
|
||||||
|
|
||||||
private Authentication getAuthentication() {
|
private Authentication getAuthentication() {
|
||||||
if ((ContextHolder.getContext() != null)
|
if ((ContextHolder.getContext() != null)
|
||||||
&& ContextHolder.getContext() instanceof SecureContext) {
|
&& ContextHolder.getContext() instanceof SecureContext) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -70,6 +70,7 @@ public class ContextHolderAwareRequestWrapperTests extends TestCase {
|
||||||
assertEquals("marissa", wrapper.getRemoteUser());
|
assertEquals("marissa", wrapper.getRemoteUser());
|
||||||
assertTrue(wrapper.isUserInRole("ROLE_FOO"));
|
assertTrue(wrapper.isUserInRole("ROLE_FOO"));
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_NOT_GRANTED"));
|
assertFalse(wrapper.isUserInRole("ROLE_NOT_GRANTED"));
|
||||||
|
assertEquals(auth, wrapper.getUserPrincipal());
|
||||||
|
|
||||||
ContextHolder.setContext(null);
|
ContextHolder.setContext(null);
|
||||||
}
|
}
|
||||||
|
@ -93,6 +94,7 @@ public class ContextHolderAwareRequestWrapperTests extends TestCase {
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_NOT_GRANTED"));
|
assertFalse(wrapper.isUserInRole("ROLE_NOT_GRANTED"));
|
||||||
assertTrue(wrapper.isUserInRole("ROLE_FOOBAR"));
|
assertTrue(wrapper.isUserInRole("ROLE_FOOBAR"));
|
||||||
assertTrue(wrapper.isUserInRole("ROLE_HELLO"));
|
assertTrue(wrapper.isUserInRole("ROLE_HELLO"));
|
||||||
|
assertEquals(auth, wrapper.getUserPrincipal());
|
||||||
|
|
||||||
ContextHolder.setContext(null);
|
ContextHolder.setContext(null);
|
||||||
}
|
}
|
||||||
|
@ -106,6 +108,7 @@ public class ContextHolderAwareRequestWrapperTests extends TestCase {
|
||||||
"/"));
|
"/"));
|
||||||
assertNull(wrapper.getRemoteUser());
|
assertNull(wrapper.getRemoteUser());
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_ANY"));
|
assertFalse(wrapper.isUserInRole("ROLE_ANY"));
|
||||||
|
assertNull(wrapper.getUserPrincipal());
|
||||||
|
|
||||||
ContextHolder.setContext(null);
|
ContextHolder.setContext(null);
|
||||||
}
|
}
|
||||||
|
@ -117,6 +120,7 @@ public class ContextHolderAwareRequestWrapperTests extends TestCase {
|
||||||
"/"));
|
"/"));
|
||||||
assertNull(wrapper.getRemoteUser());
|
assertNull(wrapper.getRemoteUser());
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_ANY"));
|
assertFalse(wrapper.isUserInRole("ROLE_ANY"));
|
||||||
|
assertNull(wrapper.getUserPrincipal());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testNullPrincipalHandling() throws Exception {
|
public void testNullPrincipalHandling() throws Exception {
|
||||||
|
@ -133,6 +137,7 @@ public class ContextHolderAwareRequestWrapperTests extends TestCase {
|
||||||
assertNull(wrapper.getRemoteUser());
|
assertNull(wrapper.getRemoteUser());
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_HELLO")); // principal is null, so reject
|
assertFalse(wrapper.isUserInRole("ROLE_HELLO")); // principal is null, so reject
|
||||||
assertFalse(wrapper.isUserInRole("ROLE_FOOBAR")); // principal is null, so reject
|
assertFalse(wrapper.isUserInRole("ROLE_FOOBAR")); // principal is null, so reject
|
||||||
|
assertNull(wrapper.getUserPrincipal());
|
||||||
|
|
||||||
ContextHolder.setContext(null);
|
ContextHolder.setContext(null);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
<action dev="benalex" type="update">FilterToBeanProxy now searches hierarchical bean factories</action>
|
<action dev="benalex" type="update">FilterToBeanProxy now searches hierarchical bean factories</action>
|
||||||
<action dev="benalex" type="update">Improved Tapestry support in AbstractProcessingFilter</action>
|
<action dev="benalex" type="update">Improved Tapestry support in AbstractProcessingFilter</action>
|
||||||
<action dev="benalex" type="update">User now accepted blank passwords (null passwords still rejected)</action>
|
<action dev="benalex" type="update">User now accepted blank passwords (null passwords still rejected)</action>
|
||||||
|
<action dev="benalex" type="update">ContextHolderAwareRequestWrapper now provides a getUserPrincipal() method</action>
|
||||||
<action dev="benalex" type="fix">Contacts sample web.xml no longer expect Log4j to be in classpath</action>
|
<action dev="benalex" type="fix">Contacts sample web.xml no longer expect Log4j to be in classpath</action>
|
||||||
<action dev="raykrueger" type="update">JaasAuthenticatinProvider now uses System.property "java.security.auth.login.config"</action>
|
<action dev="raykrueger" type="update">JaasAuthenticatinProvider now uses System.property "java.security.auth.login.config"</action>
|
||||||
<action dev="raykrueger" type="update">JaasAuthenticationCallbackHandler Authentication is passed to handle method setAuthenticatoin removed</action>
|
<action dev="raykrueger" type="update">JaasAuthenticationCallbackHandler Authentication is passed to handle method setAuthenticatoin removed</action>
|
||||||
|
|
Loading…
Reference in New Issue