Baru -baru ini, ketika menulis proyek dengan SpringMVC, saya mengalami masalah, yang merupakan masalah otentikasi dari metode ini. Masalah ini telah diselesaikan selama sehari dan akhirnya terpecahkan. Mari kita lihat solusi di bawah ini.
Persyaratan Proyek: Di mana otentikasi diperlukan, saya hanya perlu memberi label, seperti hanya operasi yang dapat dilakukan oleh login pengguna. Secara umum, pertama -tama kami akan memverifikasi input identitas pengguna saat menjalankan metode, yang secara tidak terlihat meningkatkan banyak beban kerja dan menciptakan kembali roda. Dengan anotasi Java, Anda hanya perlu memberi label pada metode yang membutuhkan otentikasi:
Larutan:
1. Pertama buat kelas anotasi:
@Didokumentasikan@warisan@target ({elementType.method, elementType.type})@retensi (retentionpolicy.runtime) public @interface auth {boolean validate () default true;}2. Buat interseptor lain:
public class AuthInterceptor extends BaseInterceptor{@Override public Boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if(handler.getClass().isAssignableFrom(HandlerMethod.class)){Auth authPassport = ((HandlerMethod) pawang) .getMethodanNotation (auth.class); // tidak ada izin yang dinyatakan, atau tidak ada izin yang dinyatakan tidak diverifikasi jika (authpassport == null) {return true;} lain {// mengimplementasikan logika verifikasi Anda sendiri di sini jika (true) {// jika verifikasi yang berhasil, ini benar -benar ditulis (ini ditulis secara langsung dengan secara langsung dengan proses verifikasi. verifikasi "); kembalikan true;} else {// jika verifikasi gagal // kembali ke antarmuka login // system.out.println (" Verifikasi izin benar "); // response.sendredirect (" akun/login "); return false;}} else {return true;}}}3. Konfigurasikan pencegat: Anda perlu menambahkan kode berikut ke *-servlet.xml. Jika Anda menyesuaikan file konfigurasi, Anda juga dapat langsung memasukkannya ke dalam file konfigurasi yang Anda tentukan.
<MVC: Interceptors> <bean/> </mvc: Interceptors>
CATATAN: Anda perlu mengubah default ke RequestMappingHandlermapping dan menambahkan Bean of RequestMappingHandLerapter
Restart Tomcat saja.
Pengingat Hangat: Jika Anda memerlukan otentikasi untuk suatu metode, Anda hanya perlu mengetik @Auth pada metode ini. Jika Anda memerlukan otentikasi untuk semua metode kelas, Anda hanya perlu mengetik @Auth di kelas.
Jadi masalahnya, metode pencegat akan mencegat sumber daya statis bersama. Kita perlu mencegat file statis di tomcat, seperti: solusi saya adalah mengonfigurasinya di web.xml. Jika Anda memiliki metode yang baik, Anda juga dapat menambahkan saya QQ 752432995 untuk membahasnya.
<servlet-mapping> <servlet-name> default </servlet-name> <ritl-pola>*. jpg </rerl-pattern> </servlet-mapping> <servlet-Mapping> <servlet-name> default </servlet-name> <rerl-pattern>*. png </url-pola> </servlet>
Meringkaskan
Di atas adalah seluruh konten artikel ini tentang kode solusi pencegat anotasi yang digunakan untuk springmvc untuk otentikasi metode. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
SpringMVC Interceptor mengimplementasikan masuk tunggal
Penjelasan terperinci tentang apakah SpringMVC Interceptor mengimplementasikan sesi pemantauan berakhir
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!