- Tạo ứng dụng Spring Boot bằng Spring Launchizr
- Cấu hình Cassandra trong Spring Boot
- Định cấu hình nhóm kết nối Tomcat trên Spring Boot
- Định tuyến tin nhắn Camel đến Artemis được nhúng bằng WildFly
Gần đây, khi tôi đang thực hiện một dự án, tôi đã sử dụng hệ thống quản lý quyền dựa trên sự phân tách giữa giao diện người dùng và mặt sau. Spring Security được sử dụng trong phần phụ trợ dưới dạng quản lý kiểm soát quyền. Sau đó, quyền truy cập giao diện giao diện người dùng liên quan đến nhiều miền. Tuy nhiên, cho dù tôi đã định cấu hình tên miền chéo như thế nào thì việc sử dụng nó cũng không có hiệu lực.An ninh mùa xuân
Khi được định cấu hình riêng, tên miền chéo SpringBoot là không đủ và tên miền chéo bảo mật cần được định cấu hình.
Tên miền chéo là một chính sách bảo mật có cùng nguồn gốc của trình duyệt, nghĩa là trình duyệt đơn phương hạn chế quyền truy cập tên miền chéo vào các tập lệnh
Trong HTML,,
,
Phần phụ trợ đóng gói các kết quả trả về thành định dạng dữ liệu được yêu cầu
jsonp({ "error":200, "message://Yêu cầu thành công", "data":[{ "tên người dùng":"Zhang San", "age":20 }] })
Tóm tắt: JSONP triển khai rất đơn giản nhưng nó chỉ hỗ trợ các yêu cầu GET trên các miền, điều này có những hạn chế lớn.
CORS là một tiêu chuẩn W3C, có tên đầy đủ là "Chia sẻ tài nguyên Cross-origin", cho phép trình duyệt đưa ra các yêu cầu XMLHttpRequest tới các máy chủ cross-origin, từ đó khắc phục hạn chế là AJAX chỉ có thể được sử dụng từ cùng một nguồn.
Có một bộ trường tiêu đề HTTP mới trong thông số kỹ thuật, thông báo cho khách hàng về các hạn chế giữa nhiều miền bằng cách thêm Tiêu đề đặc biệt [Kiểm soát truy cập-Cho phép-Xuất xứ] vào máy chủ Nếu trình duyệt hỗ trợ CORS và xác định rằng Nguồn gốc. được thông qua, nó sẽ cho phép XMLHttpRequest khởi tạo các yêu cầu tên miền chéo
Lưu ý: CORS không hỗ trợ các trình duyệt dưới IE8
Thuộc tính tiêu đề CORS | giải thích |
---|---|
Kiểm soát truy cập-Cho phép-Xuất xứ | Cho phép miền http://www.xxx.com (do chính bạn đặt, chỉ là ví dụ ở đây) thực hiện yêu cầu tên miền chéo |
Kiểm soát truy cập-Tuổi tối đa | Đặt thành 86400 giây và không cần yêu cầu xác minh trước nữa. |
Phương thức kiểm soát truy cập-Cho phép- | Đặt phương thức để cho phép yêu cầu tên miền chéo |
Kiểm soát truy cập-Cho phép-Tiêu đề | Cho phép các yêu cầu tên miền chéo bao gồm loại nội dung |
Kiểm soát truy cập-Cho phép-Thông tin xác thực | Đặt để cho phép cookie |
Đây là chú thích đi kèm với SpringBoot. Cách sử dụng rất đơn giản. Bạn chỉ cần thêm chú thích cuối cùng vào giao diện tương ứng.
Điều đó có nghĩa là giao diện này hỗ trợ nhiều tên miền, trong đónguồn gốc = "*"
Cho biết tất cả các địa chỉ đều có thể truy cập vào giao diện này hoặc bạn có thể viết một địa chỉ cụ thể, cho biết chỉ địa chỉ này mới có thể truy cập vào giao diện.
Nó có thể được chú thích trên lớp và phương thức.bộ điều khiển
Tất cả các giao diện đều hỗ trợ tên miền chéo. Một phương pháp duy nhất cho biết rằng chỉ giao diện này hỗ trợ tên miền chéo.
Mặc dù phương pháp này thanh lịch và đơn giản nhưng nhược điểm của nó không nhỏ. Các giao diện yêu cầu tên miền chéo cần được thêm vào chú thích này. Điều này không thân thiện với các dự án có sự tách biệt giữa front-end và back-end. nhiều lần nên phương pháp này về cơ bản rất hiếm được sử dụng.
Ghi đè WebMvcConfigureraddCorsMappings
phương pháp
@Configuration public class CorsConfig triển khai WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry register) { register.addMapping("/**")//Tất cả các giao diện trong dự án đều hỗ trợ cross-domain.allowedOriginPatterns("*")//Tất cả các địa chỉ Tất cả đều có thể được truy cập và các địa chỉ cụ thể cũng có thể được định cấu hình.allowCredentials(true) .allowedMethods("*")//"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" .maxAge(3600);// Thời gian cho phép trên nhiều miền} }
Để ýallowOrigins("*")
VàallowCredentials(true)
vìĐÚNG VẬY
Đôi khi sẽ xảy ra lỗi và cần phải thay đổi thànhallowOriginPatterns("*")
Hoặc chỉ định giao diện riêngallowOrigins("http//www.baidu.com")
@Cấu hình
Đại diện cho một lớp cấu hình, lớp này sẽ được tải khi dự án bắt đầu. hoàn thànhTrình cấu hình WebMvc
Giao diện và viết lạiaddCorsMappings
phương pháp. Mã tương đối đơn giản và có ý kiến
@Bean public CorsFilter corsFilter() { //1. Thêm thông tin cấu hình CORS CorsConfiguration config = new CorsConfiguration(); // Những miền gốc nào được phép config.addAllowedOrigin("*"); // Có gửi thông tin Cookie config.setAllowCredentials hay không (true ); // Những miền gốc nào được phép (phương thức yêu cầu) config.addAllowedMethod("*"); // Những miền gốc nào được phép (thông tin tiêu đề) config.addAllowedHeader("*"); //Thông tin tiêu đề nào được hiển thị (vì truy cập tên miền chéo không thể lấy tất cả thông tin tiêu đề theo mặc định) config.addExposeHeader("*"); //2. UrlBasedCorsConfigurationSource (); configSource.registerCorsConfiguration("/**", config); //3. trả về CorsFilter mới (configSource);
@Slf4j @Component lớp công khai CorsFilter triển khai Bộ lọc { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) ném IOException, ServletException { HttpServletResponse phản hồi = (HttpServletResponse)servletResponse; reply.setHeader("Access-Control-Allow-Origin", "*"); reply.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE"); "Kiểm soát truy cập-Tuổi tối đa", "3600"); reply.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization"); bộ đệm, không lưu trữ, phải xác nhận lại"); reply.setHeader("Pragma", "no-cache"); filterChain.doFilter(servletRequest,response);
Ba phương pháp trên đều có thể giải quyết được vấn đề. Những phương pháp được sử dụng phổ biến nhất là phương pháp thứ nhất và thứ hai. Nói chung, không cần phải đi sâu vào chi tiết.
Nếu sử dụng ba phương thức cấu hình này thì phương thức nào sẽ có hiệu lực? Nó tương tự như kiểu trong css.nguyên tắc tiệm cận
, hiểu rồi
Nếu sử dụng trong dự ánAn ninh mùa xuân
Việc cấu hình phương thức mở rộng ở trên là chưa đủ, nó cần được chỉ định riêng.An ninh mùa xuân
Tên miền chéo
Nếu không thì khoảng thời gian sẽ không có hiệu lực
Spring Security hỗ trợ CORS rất tốt, chỉ cần kích hoạt hỗ trợ CORS trong bộ cấu hình và ghi nguồn cấu hình CORS
@Override protected void configure(HttpSecurity http) ném ngoại lệ { // Chúng tôi không cần CSRF cho ví dụ này http.cors().and().csrf().disable() // không xác thực yêu cầu cụ thể này .authorizeRequests( ).antMatchers("/", "/*.html", "/favicon.ico", "/css/**", "/js/**", "/fonts/**", "/layui/**", "/img/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/ **", "/pages/**", "/druid/**", "/statics/**", "/login", "/register").permitAll(). // tất cả các yêu cầu khác cần phải được xác thực AnyRequest().authenticated().and(). // đảm bảo chúng tôi sử dụng phiên không trạng thái; phiên sẽ không được sử dụng để // lưu trữ trạng thái của người dùng. //Ghi đè ngoại lệ đăng nhập mặc định.authenticationEntryPoint(jwtAuthenticationEntryPoint).and ( ).sessionQuản lý() // Dựa trên mã thông báo, do đó không cần phiên .sessionCreationPolicy(SessionCreationPolicy.STATELESS); // Thêm bộ lọc để xác thực mã thông báo với mọi yêu cầu http.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class); } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOriginPattern("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); ", corsConfiguration); trả về CorsFilter mới (nguồn }
Giới thiệu ngắn gọn về giám sát dịch vụ SpringBoot-Admin. Spring Boot Actuator là một mô-đun chức năng đi kèm với Spring Boot. Nó cung cấp một bộ công cụ thường được sử dụng trong môi trường sản xuất và sẵn sàng sử dụng ngay.
Tôi muốn tìm danh sách các mô hình khớp với trường nameEnglish hoặc name Chinese theo từ khóa. Tôi đã dành hơn một giờ để tìm kiếm nhưng tôi không thể làm được. Xin hãy giúp đỡ. Ví dụ bắt đầu Springboot Mongo https://s
(Lưu ý: Trong khi điều tra vấn đề này, tốt hơn hết tôi nên phát hiện ra nguồn gốc của vấn đề mà tôi mô tả ở đây) Tôi mới làm quen với Hibernate và SpringBoot. Dự án của tôi liên quan đến một công cụ tìm kiếm lập chỉ mục (máy khách javafx
Gần đây tôi đã nâng cấp một ứng dụng web từ springboot lên springboot 2. Khi tôi triển khai nó lên Tomcat 8, nó dường như bắt đầu nhưng chưa hoàn toàn. tại localhost.2019-09-
Tôi mới sử dụng Spring boot...Tôi gặp sự cố khi chạy Bộ điều khiển, Mô tả: Trường todoService trong com.springboot.todoCon
Tôi có một ứng dụng SpringBoot giao tiếp với PostgreSQL bằng cấu hình sau, được triển khai qua AWS Beanstrik: . Mọi thứ đều ổn cho đến khi tôi cập nhật chứng chỉ AWS Aurora lên rds-ca-ecc384-g1
Tính duy nhất của thuật toán bông tuyết có thể được đảm bảo trong một nút duy nhất. Tương ứng với ứng dụng trong kubernetes, nếu nó được mở rộng theo chiều ngang và tạo ra nhiều bản sao, các ID trùng lặp có thể xuất hiện, điều này yêu cầu chúng tôi thực hiện một workId theo pod_name. , tôi vẫn
Tôi thực sự không biết nên viết gì trong tiêu đề. Bạn có thể cho tôi một số gợi ý trong phần bình luận không? Hahaha, trước tiên hãy thử sử dụng mô hình AI lớn được cung cấp ở Trung Quốc để tạo ra một trang web có thể làm được. chỉ nói chuyện với AI. Chỉ sử dụng Zhipu AI trong phần điều khiển.
1. Giới thiệu Trong quá trình phát triển hệ thống phần mềm thực tế, do nhu cầu kinh doanh, việc giải mẫn cảm dữ liệu ở cấp mã là chưa đủ. Thường cần phải nhắm mục tiêu một số thông tin nhạy cảm quan trọng nhất định ở cấp cơ sở dữ liệu, chẳng hạn như thẻ ID được mã hóa. lưu trữ các thông tin như số điện thoại, số thẻ ngân hàng, số điện thoại di động, mức lương,…
Selenium Selenium là bộ công cụ mã nguồn mở để kiểm tra tự động các ứng dụng web. Nó chủ yếu được sử dụng cho các mục đích sau: Tự động hóa trình duyệt: Selenium có thể mô phỏng hành vi của người dùng thực trong các trình duyệt khác nhau (chẳng hạn như Chrome, Fire
1. Giới thiệu Trong quá trình phát triển dự án thực tế, chức năng thông báo qua email thường được sử dụng. Ví dụ: đăng ký qua email, lấy lại mật khẩu qua email, gửi báo cáo qua email, v.v. Có nhiều tình huống ứng dụng thực tế. Trong những ngày đầu, để hiện thực hóa chức năng gửi email tự động, Ja
SpringBoot: Dựa trên các chú thích tùy chỉnh redis để triển khai xác minh gửi chống lặp lại giao diện back-end 1. Thêm phần phụ thuộc org.springframework.boot spring
SpringBoot: Sử dụng Jackson để hoàn tất cấu hình tuần tự hóa toàn cầu 1. Chuẩn bị kiểm tra com.fasterxml.jackson.core jackson-cor
springboot: Tích hợp rocketmq 1. Nhà sản xuất hoạt động thông báo đơn giản tích hợp phụ thuộc nhập mq org.springframework.boot
springboot: Các chú thích thường được sử dụng 1. Quét gói chú thích chung mùa xuân + chú thích chú thích thành phần @Component: thường đề cập đến các thành phần khác nhau @Controller, @Service, @Repository có thể được gọi là @Comp
Chúng ta thường cần tương tác với một số dữ liệu giữa hai hệ thống. Lúc này, chúng ta cần phát triển giao diện tương tác dữ liệu. Nói chung, các giao diện gặp nhiều hơn bao gồm giao diện HTTP, giao diện WebService và truyền tệp FTP. Hôm nay mình sẽ tìm hiểu về SpringB
Bối cảnh Gần đây, dự án đã được triển khai và Bên A yêu cầu nó phải vượt qua kiểm tra bảo mật trước khi được chấp nhận. Do đó, một loạt biện pháp tăng cường bảo mật đã được thực hiện trên hệ thống dựa trên kết quả quét. Bài viết này giới thiệu một số vấn đề bảo mật phổ biến và chiến lược bảo vệ. và cung cấp các giải pháp tương ứng cho các cuộc tấn công XSS chéo trang thường xảy ra trong các bình luận trên diễn đàn, v.v.
1. Loại trừ cấu hình nhật ký mặc định của Spring-boot-starter và thay đổi spring-boot-starter ban đầu thành org.springframework.boot
springboot: Giải quyết vấn đề liên miền 1. Giới thiệu tên miền chéo Thành phần của URL: // Giao thức + tên miền (tên miền phụ + tên miền chính) + số cổng + địa chỉ tài nguyên http://www.baidu.com:8080 / Miễn là giao thức
1. Ý tưởng tùy chỉnh Starter: Tạo một dự án Maven và tạo ba mô-đun: một mô-đun là demo-app, một mô-đun là demo-module và một mô-đun là demo-module-springboot-star.
Tôi là một lập trình viên xuất sắc, rất giỏi!