2012-07-24 108 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