Setelah pengguna baru mengirimkan formulir 'Akun baru', saya ingin memasukkan pengguna tersebut secara manual sehingga mereka tidak perlu masuk di halaman berikutnya.
Halaman login form normal melalui pencegat keamanan pegas berfungsi dengan baik.
Di pengontrol formulir akun baru, saya membuat UsernamePasswordAuthenticationToken dan menyetelnya di SecurityContext secara manual:
SecurityContextHolder.getContext().setAuthentication(authentication);
Pada halaman yang sama saya kemudian memeriksa apakah pengguna login dengan:
SecurityContextHolder.getContext().getAuthentication().getAuthorities();
Ini mengembalikan otoritas yang saya tetapkan sebelumnya di otentikasi. Semuanya baik-baik saja.
Tetapi ketika kode yang sama ini dipanggil di halaman berikutnya yang saya muat, token otentikasi hanya UserAnonymous.
Saya tidak jelas mengapa itu tidak menyimpan otentikasi yang saya setel pada permintaan sebelumnya. Ada pemikiran?
- Mungkinkah ada hubungannya dengan ID sesi yang tidak disiapkan dengan benar?
- Apakah ada sesuatu yang mungkin menimpa otentikasi saya?
- Mungkin saya hanya perlu langkah lain untuk menyimpan otentikasi?
- Atau adakah sesuatu yang perlu saya lakukan untuk mendeklarasikan otentikasi di seluruh sesi daripada satu permintaan?
Hanya mencari beberapa pemikiran yang mungkin dapat membantu saya melihat apa yang terjadi di sini.
SecurityContextHolder.getContext().setAuthentication(authentication)
. Ini berfungsi, dan umum, tetapi ada kekurangan fungsionalitas serius yang akan Anda temui jika Anda melakukannya. Untuk info lebih lanjut, lihat pertanyaan saya, dan jawabannya: stackoverflow.com/questions/47233187/…