簡體   English   中英

播放框架2-Java中的isAuthenticated

[英]Play framework 2 - isAuthenticated in Java

在我的動作中,我想根據用戶是否通過身份驗證來呈現不同的視圖(或可能僅顯示其他一些div)。

我應該做這樣的事情:

public static Result index() {          
   if (Context.current().request().username().equals("")) {
        // user is NOT authenticated
        return ok(welcome.render());
    } else {
        // user is authenticated
        return ok(dashboard.render());
    }
}

以及如何檢查用戶是否在視圖中通過了身份驗證? 我知道我可以使用@ Security.Authenticated(Secured.class)批注,但是事情是有條件的嗎?

取決於您要實現的目標。 如果僅需要確定用戶是否登錄,則可以在控制器類中使用類似您編寫的內容,例如:

public static boolean loggedIn() {
        return (session().get("userId") != null);
    }

然后在靜態控制器方法中檢查用戶是否已登錄:

if (!loggedIn()) {
            return redirect(routes.Application.login());
        }

請注意session()的使用,通過它可以訪問安全會話cookie的映射,並從那里可以獲取用戶ID。 如果您想實現更復雜的邏輯,例如 針對不同的用戶組采取不同的操作,那么情況就不同了。

或者在緩存中使用經過身份驗證的用戶ID的某些映射,然后在會話中驗證userId(無論它是否在映射中),或者可以使用用戶的某些屬性(例如一組userRoles)並設置相應地可見。 這些是我所知道的最明智的方式。

(以下是如何使用控制器的session(): ControllerSession

暫無
暫無

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

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