Pengenalan kepada Spring Security Taglibs

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melihat Spring Security Taglibs, yang memberikan sokongan asas untuk mengakses maklumat keselamatan dan menerapkan batasan keselamatan di JSP.

2. Pergantungan Maven

Pertama sekali, mari tambah pergantungan taglibs spring-security ke pom.xml kami :

 org.springframework.security spring-security-taglibs 5.2.2.RELEASE 

3. Menyatakan Taglib

Sekarang, sebelum kita dapat menggunakan tag, kita perlu mengimport taglib di bahagian atas fail JSP kami:

Setelah menambahkannya, kita akan dapat menentukan tag Spring Security dengan awalan detik .

4. Tag yang membenarkan

4.1. mengakses Ekspresi

Dalam aplikasi kami, kami mungkin mempunyai maklumat yang harus ditunjukkan hanya untuk peranan atau pengguna tertentu.

Apabila ini berlaku, kita boleh menggunakan teg mengizinkan :

 Login   Logout 

Selain itu, kami dapat memeriksa sama ada pengguna yang disahkan mempunyai peranan tertentu:

 Manage Users 

Dan kita boleh menggunakan sebarang ungkapan Spring Security sebagai nilai akses kita :

  • hasAnyRole ('ADMIN', 'USER') kembali benar sekiranya pengguna semasa mempunyai peranan yang disenaraikan
  • isAnonymous () kembali benar sekiranya prinsipal semasa adalah pengguna tanpa nama
  • isRememberMe () kembali benar sekiranya prinsipal semasa adalah pengguna yang saya ingat
  • isFullyAuthenticated () mengembalikan kebenaran sekiranya pengguna disahkan dan tidak dikenali atau pengguna kenang-kenangan

4.2. url

Selain itu, kami dapat memeriksa pengguna yang diberi kuasa untuk mengirim permintaan ke URL tertentu:

 Manage Users 

4.3. Menyahpepijat

Mungkin ada kes di mana kita mahukan lebih banyak kawalan ke atas UI, misalnya dalam senario ujian. Alih-alih mempunyai Spring Security melewatkan rendering bahagian-bahagian yang tidak dibenarkan ini, kita dapat menetapkan spring.security.disableUISecurity = true dalam, katakanlah, file application.properties kami .

Apabila kita melakukan ini, disebabkan oleh tiada tag tidak akan menyembunyikan kandungannya. Sebaliknya, ia akan membungkus kandungan dengan ... tag sebagai gantinya. Kemudian, kita dapat menyesuaikan rendering diri dengan beberapa CSS.

Ingatlah bahawa menyembunyikan kandungan melalui CSS tidak selamat! Pengguna hanya dapat melihat sumbernya untuk melihat kandungan yang tidak dibenarkan.

5. Tag pengesahan

Pada masa lain, kami ingin memaparkan perincian mengenai pengguna yang masuk, seperti mengatakan sesuatu seperti "Welcome Back, Carol!" di laman web.

Untuk ini, kami menggunakan teg pengesahan :

 Welcome Back,  

6. Tag csrfInput

Mudah-mudahan, kami mempunyai pertahanan CSRF Spring Security di dalam aplikasi kami!

Sekiranya kita melakukannya, maka Spring Security sudah memasukkan input borang tersembunyi CSRF di dalamnya tag untuk kami.

Tetapi sekiranya kita mahu menggunakan sebaliknya, kita dapat menunjukkan secara manual di mana Spring Security harus meletakkan medan input tersembunyi ini menggunakan csrfInput :

  Text Field:

Sekiranya perlindungan CSRF tidak diaktifkan, tag ini tidak menghasilkan apa-apa.

7. Tag csrfMetaTags

Atau, jika kita ingin mengakses token CSRF dalam Javascript, kita mungkin mahu memasukkan token sebagai tag meta.

Kita boleh melakukannya dengan teg csrfMetaTags :

  JavaScript with CSRF Protection   var csrfParameter = $("meta[name='_csrf_parameter']").attr("content"); var csrfHeader = $("meta[name='_csrf_header']").attr("content"); var csrfToken = $("meta[name='_csrf']").attr("content");    ...  

Sekali lagi, jika perlindungan CSRF tidak diaktifkan, tag ini tidak akan mengeluarkan apa-apa.

8. Kesimpulannya

Dalam artikel ringkas ini, kami memfokuskan pada beberapa kasus penggunaan taglib Spring Security yang biasa.

Dan, seperti yang kita pelajari, mereka sangat berguna untuk memberikan pengesahan dan kandungan JSP yang berwenang.

Semua contoh, seperti biasa, terdapat di Github.