Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mendapatkan Butiran Pengguna Pengguna Aktif dalam Aplikasi Spring?

Patricia Arquette
Lepaskan: 2024-11-05 04:37:02
asal
546 orang telah melayarinya

How to Retrieve the Active User's UserDetails in a Spring Application?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Resolver ini juga perlu didaftarkan dalam konfigurasi.

Dengan menggunakan kaedah ini, anda boleh mendapatkan Butiran Pengguna pengguna aktif secara elegan dalam pengawal anda, mempertingkatkan kebolehselenggaraan dan kebolehbacaan kod aplikasi Spring anda.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan