[英]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(): Controller , Session )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.