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

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

Barbara Streisand
Barbara Streisandasal
2024-10-27 04:18:29205semak imbas

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>

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!

Kenyataan:
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