簡體   English   中英

如何在不使用Java身份驗證的情況下停止直接訪問網頁(自定義標簽)

[英]how can i stop direct access to web pages without authentication in java (Custom Tag)

我正在使用MVC(自定義標簽),並且我想知道如何限制對應用程序頁面的直接訪問,除非經過身份驗證,我嘗試使用過濾器,但是遇到了一個問題,即它阻止了對登錄頁面本身的訪問,我希望每一個用戶訪問登錄頁面,只有經過身份驗證后,他才能訪問其他頁面。 請告訴我我需要在代碼中進行的wat更改?

在Myjsp文件夾中,我具有所有.jsp頁(\\ Tomcat 6.0 \\ webapps \\ Myjsp),並且類文件位於classes / pack / java中

以下是過濾器:

package pack.java;

import java.io.*;
import javax.servlet.*;

public class loginfilter implements Filter {
    String aa;

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        aa = request.getRequestURI();
        chain.doFilter(request, response);
    }

    public void init(FilterConfig fconfig) throws ServletException {
    }

}

Web.xml條目:

<filter>
    <filter-name>loginfilter</filter-name>
    <filter-class>pack.java</filter-class>
</filter>

<filter-mapping>
    <filter-name>loginfilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 

我最近也遇到過同樣的問題。 因此,我發現有兩種方法可以執行此操作。 第一個是使用應用程序服務器提供的工具,這些工具使您可以對要訪問這些頁面的所有用戶進行身份驗證。 我只在JBOSS AS7上嘗試過該解決方案,並且效果很好,但我認為其他方法也可以使您執行此操作,以下鏈接通常向您說明如何執行此操作,然后只需將其調整為適合您的應用程序服務器http ://docs.oracle.com/javaee/6/tutorial/doc/gijrp.html

但是,有時您需要對身份驗證進行更多控制,而不要依賴於這種身份驗證類型(在我的情況下,我還允許通過Facebook或gmail帳戶對客戶端進行身份驗證),因此解決方案是使用僅將呼叫過濾到私有頁面(需要身份驗證)。 從我看到的結果來看,您的loggin過濾器當前正在過濾所有頁面(包括登錄頁面),因為您具有以下功能:

<url-pattern>/*</url-pattern>

為了解決此問題,我建議您將頁面組織到兩個文件夾中,一個包含公共文件,另一個包含私有文件,然后可以將其放置:

<url-pattern>/private_pages/*</url-pattern>

登錄頁面和其他所有頁面都將位於public_pages文件夾中。 此外,過濾器還沒有執行任何操作,因此您將需要獲取http會話屬性,並確定用戶是否已通過身份驗證(然后允許他查看該頁面或將其重定向到登錄頁面)。 以下是我和您進行調查時一些帖子的鏈接:- 使用J2EE進行用戶身份驗證 - 使用Java EE進行身份驗證 - 使用J2EE進行會話跟蹤

希望有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM