2012-07-24 41 views
0

在我的行動,我想渲染不同的意見(或可能只顯示其他股利),取決於用戶是否通過身份驗證。玩框架2 - isauthenticated在Java

我應該做這樣的事情:

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)註釋,但是事情是如何有條件的?

回答

0

取決於你想要達到的目標。如果你只需要決定用戶是否登錄或沒有,你可以使用像你寫在你的控制器類,如:

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

然後在靜態控制方法檢查用戶是否登錄:

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

通知使用,通過它可以訪問安全會話cookie的地圖,並從那裏你可以得到的用戶ID的會話()的。如果你想實現更復雜的邏輯,例如。針對不同的用戶羣體採取不同的行動,那麼情況就不同了。

要麼使用緩存中的某些地圖與經過身份驗證的用戶ID-s一起驗證會話中的userId,無論是在地圖中,還是可以使用用戶的某些屬性(例如,一組userRoles )並設置相應的可見內容。這些是我意識到的最明智的方式。

(這裏是你如何使用控制器的會議(): ControllerSession