diff --git a/settings.gradle b/settings.gradle
index 7ef46c6d..aaff1b87 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -19,35 +19,10 @@ include 'spring-session-docs'
include 'spring-session-hazelcast'
include 'spring-session-jdbc'
-include 'spring-session-sample-javaconfig-custom-cookie'
-project(':spring-session-sample-javaconfig-custom-cookie').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-custom-cookie')
-include 'spring-session-sample-javaconfig-jdbc'
-project(':spring-session-sample-javaconfig-jdbc').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-jdbc')
-include 'spring-session-sample-javaconfig-redis'
-project(':spring-session-sample-javaconfig-redis').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-redis')
-include 'spring-session-sample-javaconfig-rest'
-project(':spring-session-sample-javaconfig-rest').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-rest')
-include 'spring-session-sample-javaconfig-hazelcast'
-project(':spring-session-sample-javaconfig-hazelcast').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-hazelcast')
-include 'spring-session-sample-javaconfig-security'
-project(':spring-session-sample-javaconfig-security').projectDir = file('spring-session-samples/spring-session-sample-javaconfig-security')
-include 'spring-session-sample-misc-hazelcast'
-project(':spring-session-sample-misc-hazelcast').projectDir = file('spring-session-samples/spring-session-sample-misc-hazelcast')
-include 'spring-session-sample-xml-redis'
-project(':spring-session-sample-xml-redis').projectDir = file('spring-session-samples/spring-session-sample-xml-redis')
-include 'spring-session-sample-xml-jdbc'
-project(':spring-session-sample-xml-jdbc').projectDir = file('spring-session-samples/spring-session-sample-xml-jdbc')
-include 'spring-session-sample-boot-webflux'
-project(':spring-session-sample-boot-webflux').projectDir = file('spring-session-samples/spring-session-sample-boot-webflux')
-include 'spring-session-sample-boot-webflux-custom-cookie'
-project(':spring-session-sample-boot-webflux-custom-cookie').projectDir = file('spring-session-samples/spring-session-sample-boot-webflux-custom-cookie')
-include 'spring-session-sample-boot-mongodb-reactive'
-project(':spring-session-sample-boot-mongodb-reactive').projectDir = file('spring-session-samples/spring-session-sample-boot-mongodb-reactive')
-
-//file('spring-session-samples').eachDirMatch(~/spring-session-sample-.*/) { dir ->
-// include dir.name
-// project(":$dir.name").projectDir = dir
-//}
+file('spring-session-samples').eachDirMatch(~/spring-session-sample-.*/) { dir ->
+ include dir.name
+ project(":$dir.name").projectDir = dir
+}
rootProject.children.each { project ->
project.buildFileName = "${project.name}.gradle"
diff --git a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/mvc/SecurityControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/mvc/SecurityControllerAdvise.java
new file mode 100644
index 00000000..059e9f97
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/java/sample/mvc/SecurityControllerAdvise.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2014-2022 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 sample.mvc;
+
+import java.security.Principal;
+
+import jakarta.servlet.http.HttpSession;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose security related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class SecurityControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+ @ModelAttribute("httpSessionId")
+ String sessionId(HttpSession httpSession) {
+ return httpSession.getId();
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/index.html b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/index.html
index c950d816..ded45cef 100644
--- a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/index.html
+++ b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/index.html
@@ -7,7 +7,7 @@
Secured Page
This page is secured using Spring Boot, Spring Session, and Spring Security.
- Your current session id is
+ Your current session id is
@@ -26,7 +26,7 @@
|
|
diff --git a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/layout.html
index 68bfb27b..bb7c6b32 100644
--- a/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-findbyusername/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/WebMvcConfig.java b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/UserControllerAdvise.java
similarity index 54%
rename from spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/WebMvcConfig.java
rename to spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/UserControllerAdvise.java
index 98bc76b5..0af458fa 100644
--- a/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/WebMvcConfig.java
+++ b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/java/sample/config/UserControllerAdvise.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2017 the original author or authors.
+ * Copyright 2014-2022 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.
@@ -16,16 +16,22 @@
package sample.config;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import java.security.Principal;
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/").setViewName("index");
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
}
}
diff --git a/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/resources/templates/layout.html
index 50be94b5..bb42db27 100644
--- a/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-hazelcast/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/WebMvcConfig.java b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/IndexController.java
similarity index 58%
rename from spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/WebMvcConfig.java
rename to spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/IndexController.java
index 1c1a2925..1362599b 100644
--- a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/config/WebMvcConfig.java
+++ b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/IndexController.java
@@ -14,18 +14,23 @@
* limitations under the License.
*/
-package sample.config;
+package sample;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
+/**
+ * Controller for sending the user to the login view.
+ *
+ * @author Rob Winch
+ *
+ */
+@Controller
+public class IndexController {
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/").setViewName("index");
+ @RequestMapping("/")
+ public String index() {
+ return "index";
}
}
diff --git a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/UserControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/UserControllerAdvise.java
new file mode 100644
index 00000000..a1d43d80
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/UserControllerAdvise.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014-2022 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 sample;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose security related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/resources/templates/layout.html
index 50be94b5..bb42db27 100644
--- a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-jdbc/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/mvc/UserControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/mvc/UserControllerAdvise.java
new file mode 100644
index 00000000..2519081c
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/java/org/springframework/session/mongodb/examples/mvc/UserControllerAdvise.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014-2022 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 org.springframework.session.mongodb.examples.mvc;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+import java.security.Principal;
+
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/resources/templates/layout.html
index e0c8f1db..b1572bf9 100644
--- a/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-mongodb-traditional/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/web/SecurityControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/web/SecurityControllerAdvise.java
new file mode 100644
index 00000000..36bee1a7
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/java/sample/web/SecurityControllerAdvise.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2014-2022 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 sample.web;
+
+import java.security.Principal;
+
+import jakarta.servlet.http.HttpSession;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class SecurityControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+ @ModelAttribute("httpSession")
+ HttpSession httpSession(HttpSession httpSession) {
+ return httpSession;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/home.html b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/home.html
index 3e8a5df9..3345c95f 100644
--- a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/home.html
+++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/home.html
@@ -23,9 +23,9 @@
-
+
|
- |
+ |
diff --git a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/layout.html
index 2be5f82f..1dcea365 100644
--- a/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-redis-json/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/IndexController.java b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/IndexController.java
new file mode 100644
index 00000000..25418e26
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/IndexController.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2014-2022 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 sample;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * An index controller.
+ *
+ * @author Rob Winch
+ */
+@Controller
+public class IndexController {
+
+ @GetMapping("/")
+ String index() {
+ return "index";
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/UserControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/UserControllerAdvise.java
new file mode 100644
index 00000000..c7df27e8
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/java/sample/UserControllerAdvise.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014-2022 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 sample;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/resources/templates/layout.html
index 31051267..140c16e0 100644
--- a/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-redis-simple/src/main/resources/templates/layout.html
@@ -86,13 +86,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/WebMvcConfig.java b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/IndexController.java
similarity index 55%
rename from spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/WebMvcConfig.java
rename to spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/IndexController.java
index 98bc76b5..0904dc02 100644
--- a/spring-session-samples/spring-session-sample-boot-jdbc/src/main/java/sample/config/WebMvcConfig.java
+++ b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/IndexController.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2014-2017 the original author or authors.
+ * Copyright 2014-2022 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.
@@ -16,16 +16,20 @@
package sample.config;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
-@Configuration
-public class WebMvcConfig implements WebMvcConfigurer {
+/**
+ * An index controller.
+ *
+ * @author Rob Winch
+ */
+@Controller
+public class IndexController {
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/").setViewName("index");
+ @GetMapping("/")
+ String index() {
+ return "index";
}
}
diff --git a/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/UserControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/UserControllerAdvise.java
new file mode 100644
index 00000000..0af458fa
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-redis/src/main/java/sample/config/UserControllerAdvise.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014-2022 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 sample.config;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-redis/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-redis/src/main/resources/templates/layout.html
index 50be94b5..bb42db27 100644
--- a/spring-session-samples/spring-session-sample-boot-redis/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-redis/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-
-
+
+
diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/mvc/UserControllerAdvise.java b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/mvc/UserControllerAdvise.java
new file mode 100644
index 00000000..3a2fd5ec
--- /dev/null
+++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/mvc/UserControllerAdvise.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2014-2022 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 sample.mvc;
+
+import java.security.Principal;
+
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+/**
+ * {@link ControllerAdvice} to expose user related attributes.
+ *
+ * @author Rob Winch
+ */
+@ControllerAdvice
+public class UserControllerAdvise {
+
+ @ModelAttribute("currentUserName")
+ String currentUser(Principal principal) {
+ return (principal != null) ? principal.getName() : null;
+ }
+
+}
diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/resources/templates/layout.html b/spring-session-samples/spring-session-sample-boot-websocket/src/main/resources/templates/layout.html
index 3874bdf2..5eb4cc79 100644
--- a/spring-session-samples/spring-session-sample-boot-websocket/src/main/resources/templates/layout.html
+++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/resources/templates/layout.html
@@ -81,13 +81,12 @@
![Spring Security Sample]()
-