Saya memiliki persyaratan bahwa pengguna akhir tidak boleh kembali ke halaman terbatas setelah logout / logout. Tetapi saat ini pengguna akhir dapat melakukannya dengan tombol kembali browser, mengunjungi riwayat browser atau bahkan dengan memasukkan kembali URL di bilah alamat browser.
Pada dasarnya, saya ingin pengguna akhir tidak dapat mengakses halaman terbatas dengan cara apa pun setelah keluar. Bagaimana saya bisa mencapai ini yang terbaik? Bisakah saya menonaktifkan tombol kembali dengan JavaScript?
Jawaban:
Anda dapat dan tidak boleh menonaktifkan tombol kembali atau riwayat browser. Itu buruk untuk pengalaman pengguna. Ada peretasan JavaScript, tetapi tidak dapat diandalkan dan juga tidak akan berfungsi jika JS klien dinonaktifkan.
Masalah konkret Anda adalah bahwa halaman yang diminta dimuat dari cache browser, bukan langsung dari server. Ini pada dasarnya tidak berbahaya, tetapi memang membingungkan bagi pengguna akhir, karena ia salah mengira bahwa ini benar-benar berasal dari server.
Anda hanya perlu menginstruksikan browser untuk tidak menyimpan semua halaman JSP yang dibatasi (dan dengan demikian tidak hanya halaman / tindakan logout itu sendiri!). Dengan cara ini browser dipaksa untuk meminta halaman dari server, bukan dari cache dan karenanya semua pemeriksaan login di server akan dijalankan. Anda dapat melakukan ini menggunakan Filter yang menyetel header respons yang diperlukan dalam
doFilter()
metode:Petakan ini
Filter
di tempat yangurl-pattern
diminati, misalnya*.jsp
.Atau jika Anda ingin menempatkan batasan ini pada halaman aman saja, maka Anda harus menentukan pola URL yang mencakup semua halaman aman tersebut. Misalnya, jika semuanya ada di folder
/app
, maka Anda perlu menentukan pola URL/app/*
.Terlebih lagi, Anda dapat melakukan pekerjaan ini sama
Filter
seperti saat Anda memeriksa keberadaan pengguna yang masuk.Jangan lupa untuk membersihkan cache browser sebelum menguji! ;)
Lihat juga:
sumber
doFilter()
metode. Ketika saya menekan tombol logout itu diarahkan ke servlet di mana saya membatalkan sesi. Saya tidak yakin bagaimanadoFilter()
metode ini berperan di sini. Bisakah Anda memberi tahu saya bagaimana menerapkan ini? Seperti dalam, langkah-langkah yang benar untuk diikuti. Terima kasih.sendRedirect(...)
danforward()
.* .jsp dalam Pola Url tidak akan berfungsi jika Anda meneruskan halaman. Cobalah untuk memasukkan servlet Anda juga .. yang akan membuat aplikasi Anda aman dari masalah tombol kembali ini.
sumber
Cara termudah untuk melakukannya tanpa menonaktifkan browser kembali buton adalah dengan menambahkan kode ini ke
page_load
acara untuk halaman yang Anda tidak ingin pengguna untuk kembali setelah logout:sumber
Anda dapat mencoba memberi tahu browser untuk tidak meng-cache beranda (menggunakan header yang sesuai - Kedaluwarsa, Kontrol-Cache, Pragma). Tapi itu tidak dijamin berhasil. Apa yang dapat Anda lakukan, adalah membuat panggilan ajax ke server saat pemuatan halaman untuk memeriksa apakah pengguna login, dan jika tidak - redirect.
sumber
Cara yang benar untuk melakukannya adalah dengan menambahkan
header pada halaman aman. Saat pengguna logout, hapus cookie sesi mereka. Kemudian, saat mereka menavigasi kembali setelah keluar, cache browser akan hilang. Ini juga memiliki keuntungan karena tidak sepenuhnya mengalahkan caching.
sumber