Skip to content

Commit a44225d

Browse files
committed
SwitchUserFilter Defaults to POST
Fixes gh-4183
1 parent 5decfb1 commit a44225d

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,6 @@ public void setSwitchAuthorityRole(String switchAuthorityRole) {
563563
}
564564

565565
private static RequestMatcher createMatcher(String pattern) {
566-
return new AntPathRequestMatcher(pattern, null, true, new UrlPathHelper());
566+
return new AntPathRequestMatcher(pattern, "POST", true, new UrlPathHelper());
567567
}
568568
}

web/src/test/java/org/springframework/security/web/authentication/switchuser/SwitchUserFilterTests.java

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,16 @@
1616

1717
package org.springframework.security.web.authentication.switchuser;
1818

19-
import static org.assertj.core.api.Assertions.*;
20-
import static org.mockito.Mockito.*;
19+
import java.util.ArrayList;
20+
import java.util.List;
21+
import javax.servlet.FilterChain;
2122

22-
import org.junit.*;
23+
import org.junit.After;
24+
import org.junit.Before;
25+
import org.junit.Rule;
26+
import org.junit.Test;
2327
import org.junit.rules.ExpectedException;
28+
2429
import org.springframework.mock.web.MockHttpServletRequest;
2530
import org.springframework.mock.web.MockHttpServletResponse;
2631
import org.springframework.security.authentication.AccountExpiredException;
@@ -42,8 +47,10 @@
4247
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
4348
import org.springframework.security.web.util.matcher.AnyRequestMatcher;
4449

45-
import javax.servlet.FilterChain;
46-
import java.util.*;
50+
import static org.assertj.core.api.Assertions.assertThat;
51+
import static org.mockito.Mockito.mock;
52+
import static org.mockito.Mockito.never;
53+
import static org.mockito.Mockito.verify;
4754

4855
/**
4956
* Tests
@@ -75,6 +82,7 @@ private MockHttpServletRequest createMockSwitchRequest() {
7582
request.setScheme("http");
7683
request.setServerName("localhost");
7784
request.setRequestURI("/login/impersonate");
85+
request.setMethod("POST");
7886

7987
return request;
8088
}
@@ -125,6 +133,20 @@ public void requiresExitUserWhenEndsWithThenDoesNotMatch() {
125133
assertThat(filter.requiresExitUser(request)).isFalse();
126134
}
127135

136+
@Test
137+
// gh-4183
138+
public void requiresExitUserWhenGetThenDoesNotMatch() {
139+
SwitchUserFilter filter = new SwitchUserFilter();
140+
141+
MockHttpServletRequest request = new MockHttpServletRequest();
142+
request.setScheme("http");
143+
request.setServerName("localhost");
144+
request.setRequestURI("/login/impersonate");
145+
request.setMethod("GET");
146+
147+
assertThat(filter.requiresExitUser(request)).isFalse();
148+
}
149+
128150
@Test
129151
public void requiresExitUserWhenMatcherThenWorks() {
130152
SwitchUserFilter filter = new SwitchUserFilter();
@@ -159,6 +181,20 @@ public void requiresSwitchUserWhenEndsWithThenDoesNotMatch() {
159181
assertThat(filter.requiresSwitchUser(request)).isFalse();
160182
}
161183

184+
@Test
185+
// gh-4183
186+
public void requiresSwitchUserWhenGetThenDoesNotMatch() {
187+
SwitchUserFilter filter = new SwitchUserFilter();
188+
189+
MockHttpServletRequest request = new MockHttpServletRequest();
190+
request.setScheme("http");
191+
request.setServerName("localhost");
192+
request.setRequestURI("/login/impersonate");
193+
request.setMethod("GET");
194+
195+
assertThat(filter.requiresSwitchUser(request)).isFalse();
196+
}
197+
162198
@Test
163199
public void requiresSwitchUserWhenMatcherThenWorks() {
164200
SwitchUserFilter filter = new SwitchUserFilter();

0 commit comments

Comments
 (0)