Mendapatkan Butiran Pengguna Pengguna Aktif
Apabila bekerja dengan pengawal dalam aplikasi Spring, mendapatkan semula butiran pengguna aktif boleh dicapai dengan mengakses pelaksanaan UserDetails.
<code class="java">User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();</code>
Walaupun pendekatan ini berfungsi, ia boleh dipermudahkan menggunakan suntikan pergantungan.
Menggunakan @AuthenticationPrincipal Anotasi
Dalam Spring Security 3.2 dan lebih baru, anotasi @AuthenticationPrincipal boleh digunakan. Penyelesaian elegan ini membolehkan suntikan terus objek UserDetails ke dalam pengawal atau kaedah.
<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { ... }</code>
Menggunakan ArgumentResolvers
Sebelum Spring Security 3.2, atau jika penyesuaian diperlukan , penyelesai hujah boleh digunakan. WebArgumentResolver, seperti CurrentUserWebArgumentResolver, boleh dibuat untuk menyelesaikan objek UserDetails secara automatik.
<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver { @Override public Object resolveArgument(...) { if (...) { return (User) ((Authentication) principal).getPrincipal(); } else { return WebArgumentResolver.UNRESOLVED; } } }</code>
Penyelesai ini perlu didaftarkan dalam konfigurasi aplikasi.
Spring 3.1 : HandlerResolvthodArgument 🎜>
Dalam Spring 3.1 , HandlerMethodArgumentResolver, seperti CurrentUserHandlerMethodArgumentResolver, disyorkan. Ia menyediakan kefungsian yang serupa dengan WebArgumentResolver.<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public Object resolveArgument(...) { if (...) { return (User) ((Authentication) principal).getPrincipal(); } else { return WebArgumentResolver.UNRESOLVED; } } }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Butiran Pengguna Pengguna Aktif dalam Aplikasi Spring?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!