diff --git a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/HelloWorldTests.java b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/FormLoginTests.java similarity index 89% rename from servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/HelloWorldTests.java rename to servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/FormLoginTests.java index 84a3a7b..75e168e 100644 --- a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/HelloWorldTests.java +++ b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/FormLoginTests.java @@ -15,8 +15,8 @@ */ package example; +import example.pages.CustomLoginPage; import example.pages.HomePage; -import example.pages.LoginPage; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -28,7 +28,7 @@ import org.openqa.selenium.htmlunit.HtmlUnitDriver; * * @author Michael Simons */ -public class HelloWorldTests { +public class FormLoginTests { private WebDriver driver; @@ -47,7 +47,7 @@ public class HelloWorldTests { @Test void accessHomePageWithUnauthenticatedUserSendsToLoginPage() { - final LoginPage loginPage = HomePage.to(this.driver, this.port); + final CustomLoginPage loginPage = HomePage.to(this.driver, this.port); loginPage.assertAt(); } @@ -66,7 +66,7 @@ public class HelloWorldTests { @Test void authenticatedUserLogsOut() { // @formatter:off - LoginPage loginPage = HomePage.to(this.driver, this.port) + CustomLoginPage loginPage = HomePage.to(this.driver, this.port) .loginForm() .username("user") .password("password") diff --git a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/CustomLoginPage.java similarity index 90% rename from servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java rename to servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/CustomLoginPage.java index 25bcec3..3aca739 100644 --- a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java +++ b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/CustomLoginPage.java @@ -27,19 +27,19 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Michael Simons */ -public class LoginPage { +public class CustomLoginPage { private final WebDriver webDriver; private final LoginForm loginForm; - public LoginPage(WebDriver webDriver) { + public CustomLoginPage(WebDriver webDriver) { this.webDriver = webDriver; this.loginForm = PageFactory.initElements(this.webDriver, LoginForm.class); } - public LoginPage assertAt() { - assertThat(this.webDriver.getTitle()).isEqualTo("Please sign in"); + public CustomLoginPage assertAt() { + assertThat(this.webDriver.getTitle()).isEqualTo("Custom Log In Page"); return this; } diff --git a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/HomePage.java b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/HomePage.java index 5cd72a3..48bcc81 100644 --- a/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/HomePage.java +++ b/servlet/java-configuration/authentication/username-password/form/src/integTest/java/example/pages/HomePage.java @@ -37,9 +37,9 @@ public class HomePage { @FindBy(css = "input[type=submit]") private WebElement logoutButton; - public static LoginPage to(WebDriver driver, int port) { + public static CustomLoginPage to(WebDriver driver, int port) { driver.get("http://localhost:" + port + "/"); - return PageFactory.initElements(driver, LoginPage.class); + return PageFactory.initElements(driver, CustomLoginPage.class); } public HomePage(WebDriver webDriver) { @@ -51,9 +51,9 @@ public class HomePage { return this; } - public LoginPage logout() { + public CustomLoginPage logout() { this.logoutButton.submit(); - return PageFactory.initElements(this.webDriver, LoginPage.class); + return PageFactory.initElements(this.webDriver, CustomLoginPage.class); } } diff --git a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/LoginController.java b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/LoginController.java new file mode 100644 index 0000000..10c3a62 --- /dev/null +++ b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/LoginController.java @@ -0,0 +1,35 @@ +/* + * Copyright 2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package example; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * Controller for the custom log in page. + * + * @author Rob WInch + */ +@Controller +public class LoginController { + + @GetMapping("/login") + String login() { + return "login"; + } + +} diff --git a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/SecurityConfiguration.java b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/SecurityConfiguration.java index 3574640..d7e59a9 100644 --- a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/SecurityConfiguration.java +++ b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/SecurityConfiguration.java @@ -24,8 +24,6 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; -import static org.springframework.security.config.Customizer.withDefaults; - @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @@ -33,11 +31,13 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { // @formatter:off protected void configure(HttpSecurity http) throws Exception { http - .authorizeRequests((requests) -> requests - .anyRequest().authenticated() - ) - .httpBasic(withDefaults()) - .formLogin(withDefaults()); + .authorizeRequests((requests) -> requests + .anyRequest().authenticated() + ) + .formLogin((form) -> form + .loginPage("/login") + .permitAll() + ); } // @formatter:on diff --git a/servlet/java-configuration/authentication/username-password/form/src/main/resources/templates/login.html b/servlet/java-configuration/authentication/username-password/form/src/main/resources/templates/login.html index c28c5b2..f7935bd 100644 --- a/servlet/java-configuration/authentication/username-password/form/src/main/resources/templates/login.html +++ b/servlet/java-configuration/authentication/username-password/form/src/main/resources/templates/login.html @@ -1,9 +1,10 @@ - - Please Login + + Custom Log In Page - -
+ +

Custom Log In Page

+
Please Login