diff --git a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java index f3c21d83df7..8561dc1095c 100644 --- a/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java +++ b/flow-server/src/main/java/com/vaadin/flow/server/auth/NavigationAccessControl.java @@ -216,7 +216,7 @@ protected Class getLoginView() { * the frontend view to use as login view */ public void setLoginView(String loginUrl) { - if (loginUrl == this.loginUrl) { + if (Objects.equals(loginUrl, this.loginUrl)) { // Probably hot reload return; } diff --git a/flow-server/src/test/java/com/vaadin/flow/server/auth/NavigationAccessControlTest.java b/flow-server/src/test/java/com/vaadin/flow/server/auth/NavigationAccessControlTest.java index fca8d4fb7cc..f0dd0821db7 100644 --- a/flow-server/src/test/java/com/vaadin/flow/server/auth/NavigationAccessControlTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/server/auth/NavigationAccessControlTest.java @@ -279,6 +279,14 @@ public void setLoginViewClassCannotBeCalledAfterSettingString() { accessControl.setLoginView(TestLoginView.class); } + @Test + public void setLoginViewStringShouldNotThrowWithSameString() { + accessControl.setLoginView("/foo"); + accessControl.setLoginView("/foo"); + accessControl.setLoginView(new String("/foo")); + Assert.assertEquals("/foo", accessControl.getLoginUrl()); + } + @Test public void beforeEnter_loginView_accessToLoginViewAlwaysAllowed() { mockCheckerResult(checker1, AccessCheckDecision.DENY);