Rumah > Java > javaTutorial > teks badan

Mengapa Pengubahhalaan Kebenaran Gagal pada Penyerahan Borang JSF Selepas Tamat Sesi dan Bagaimana untuk Membetulkannya?

Barbara Streisand
Lepaskan: 2024-10-27 04:18:29
asal
223 orang telah melayarinya

Why Does Authorization Redirect Fail on JSF Form Submission After Session Expiration and How to Fix It?

Ubah hala kebenaran pada tamat tempoh sesi gagal pada penyerahan borang JSF

Aplikasi JSF anda mengubah hala ke halaman log masuk pada tamat tempoh sesi hanya apabila navigasi halaman berlaku. Walau bagaimanapun, apabila borang JSF diserahkan, isu itu tidak dapat diselesaikan. Masalah ini boleh berpunca daripada pengendalian permintaan AJAX yang salah dalam servlet tersuai anda.

Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan penapis servlet untuk semakan kebenaran dan bukannya membuat servlet tersuai. Penapis Servlet lebih sesuai untuk tugasan ini.

Berikut ialah contoh pelaksanaan penapis kebenaran:

<code class="java">@WebFilter("/*")
public class AuthorizationFilter implements Filter {

    // Prepare XML response to redirect on AJAX requests
    private static final String AJAX_REDIRECT_XML = ...

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest request = ...;
        HttpServletResponse response = ...;
        HttpSession session = ...;
        String loginURL = ...;

        boolean loggedIn = ...;
        boolean loginRequest = ...;
        boolean resourceRequest = ...;
        boolean ajaxRequest = ...;

        // Allow access for logged-in users, login requests, resource requests, and AJAX requests
        if (loggedIn || loginRequest || resourceRequest) {
            chain.doFilter(request, response);
        }
        // For AJAX requests, return an XML response instructing the JSF engine to redirect
        else if (ajaxRequest) {
            ...
        }
        // For non-AJAX requests, perform a standard redirect
        else {
            response.sendRedirect(loginURL);
        }
    }
}</code>
Salin selepas log masuk

Penapis ini menyemak status log masuk pengguna dan jenis permintaan. Jika pengguna tidak log masuk atau permintaan itu bukan permintaan AJAX, ubah hala dilakukan. Untuk permintaan AJAX, respons XML khas dikembalikan untuk mengarahkan enjin JSF menghantar ubah hala.

Dengan menggunakan penapis servlet dengan pengendalian permintaan AJAX yang sesuai, anda boleh memastikan bahawa pengubahsuaian keizinan pada tamat tempoh sesi berfungsi dengan betul untuk kedua-dua navigasi halaman dan penyerahan borang.

Atas ialah kandungan terperinci Mengapa Pengubahhalaan Kebenaran Gagal pada Penyerahan Borang JSF Selepas Tamat Sesi dan Bagaimana untuk Membetulkannya?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!