今天做了什么:
观看 B 站视频《鸟宝的春天11_security编码实现》
参考视频中示例使用 SecurityFilterChain DSL 语法实现用户名密码登录功能。
扩展 WebAuthenticationDetails ,修改客户端 IP 获取方式,并记录服务端 IP。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class CustomWebAuthenticationDetails extends WebAuthenticationDetails { private static final long serialVersionUID = 4441359628463408329L; @Getter private final String serverAddress; public CustomWebAuthenticationDetails(final HttpServletRequest request, final String serverAddress) { super(HttpRequestUtils.getClientIp(request), extractSessionId(request)); this.serverAddress = serverAddress; } protected static String extractSessionId(final HttpServletRequest request) { final HttpSession session = request.getSession(false); return (session != null) ? session.getId() : null; } } 获取客户端 IP 使用了 HttpRequestUtils 类,实际上就是从 Request 的 header 中获取 IP。
...