Trong bài viết trước, mình đã giới thiệu với các bạn cơ bản về authentication và authorization trong Spring Security. Nếu các bạn để ý thì sẽ thấy và thắc mắc là sau khi đã đăng nhập vào ứng dụng, chúng ta sẽ logout bằng cách nào? Mình sẽ hướng dẫn các bạn cách logout trong Spring Security trong bài viết này các bạn nhé!
Mình cũng có một ứng dụng Spring Security đơn giản như sau:
Với tập tin cấu hình của Spring Security có nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 |
<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security.xsd"> <http /> <user-service> <user name="khanh" password="{noop}123456" authorities="ROLE_USER" /> </user-service> </beans:beans> |
Để logout trong Spring Security, chúng ta chỉ sẽ cần gọi đến request “/logout” được cung cấp mặc định bởi Spring Security. Khi đó, tất cả thông tin đăng nhập của user sẽ được clear và ứng dụng của chúng ta sẽ tự redirect tới request “/login?logout”.
Để thấy rõ điều này, các bạn hãy chỉnh sửa tập tin home.jsp trong thư mục src/main/webapp/WEB-INF/views/ để thêm một liên kết tới request “/logout” như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ page session="false"%> <html> <head> <title>Home</title> </head> <body> <h1>Hello world!</h1> <P>The time on the server is ${serverTime}.</P> <a href="<c:url value="/logout" />">Logout</a> </body> </html> |
Ở đây, mình sử dụng thư viện JSTL để thêm liên kết này.
Kết quả sau khi chạy ứng dụng, truy cập ứng dụng, đăng nhập với user “khanh” sẽ như sau:
Bây giờ, nếu các bạn click vào liên kết Logout, các bạn sẽ thấy kết quả như sau:
Đây chính là cửa sổ confirm là thật sự các bạn muốn logout hay không? Hãy nhấn nút Log Out để confirm việc logout các bạn nhé!
Kết quả sau đó sẽ như sau: