Spring Security, phân biệt security none, filters none, access permitAll

Spring Security, phân biệt security none, filters none, access permitAll

1. access=”permitAll”

Các thẻ <intercept-url> với thuộc tính access="permitAll" cho cho phép tất cả các request được truy cập đường dẫn. Ví dụ:

<intercept-url pattern="/login**" access="permitAll"/>

Hoặc thông qua java config:

http.authorizeRequests().antMatchers("/login**").permitAll();

Với access="permitAll"các bộ lọc security vẫn chạy bình thường do đó các chức năng của Spring Security liên quan sẽ vẫn có sẵn.

2. filters=”none”

“filters=’none'” không được hỗ trợ kể từ Spring 3.1, nó sẽ báo lỗi nếu bạn cố tình sử dụng.

Với những trường hợp muốn exclude các đường dẫn thì được khuyên dùng “security=’none'”.

Thuộc tính filters sẽ vô hiệu hóa tất cả các bộ lọc Spring Security trên đường dẫn đó. ví dụ

<intercept-url pattern="/login**" filters="none"/>

Điều này có thể là nguyên nhân lỗi khi xử lý một số request yêu cầu các tính năng của Spring Security.

3. security=”none”

Tương tự như filters=”none”, khi sử dụng security=”none” thì các bộ lọc security sẽ bị disabled trên đường dẫn đó chính vì vậy các tính năng của Spring Security trên đường dẫn đó sẽ không có sẵn.

Ví dụ:

<http pattern="/resources/**" security="none"/>

Hoặc sử dụng java config:

web.ignoring().antMatchers("/resources/**");

Chính vì lý do trên nên các thẻ <http> đã sử dụng với thuộc tính security=”none”  sẽ không thể thêm các thẻ con bên trong bởi vì nó sẽ không đảm bảo được rằng đường dẫn khai báo trong thẻ <http> thực sự được disable filter. Nếu vẫn sử dụng nó sẽ báo lỗi:

Spring Security, phân biệt security none, filters none, access permitAll

Thường security=”none” sẽ được dùng cho các đường dẫn tới static resources (các file javascript, css, image…)

Spring Security, phân biệt security none, filters none, access permitAll stackjava.com

References:

https://docs.spring.io/spring-security/site/docs/5.0.0.RELEASE/reference/htmlsingle/

stackjava.com