登录playframework后的页面

Dam*_*ian 5 java login page-flow playframework

在我的游戏中!应用程序,我编写了控制器.安全性为

class Security extends controllers.Secure.Security {
...
   static void onDisconnected() {       
       Application.index();
   }
   static void onAuthenticated() {
      User user = User.find("byEmail",Security.connected()).first();
      if(user.isAdmin()) {
         Admin.index();
      }else {
          System.out.println("onAuthenticated()::user not admin");
   }
}
Run Code Online (Sandbox Code Playgroud)

我已将路线设定为

GET     /admin/?              Admin.index
*       /admin                module:crud
GET     /                    Application.index
Run Code Online (Sandbox Code Playgroud)

当我在页面上说pageX并点击登录链接时,会出现登录表单,我可以登录.如果我以管理员身份登录,则会转到Admin.index(),从而转到Admin/index.html view.So远非常好

但是,当我在pageX上,并点击登录链接时,我希望回到pageX.Instead,调用Application.index()方法,我被带到Application.index.html ..这是预期的行为?登录后我需要做什么才能到达pageX?

更新:

我尝试使用安全控制器中的@Before将URL存储在flash中

class Security extends controllers.Secure.Security {
   @Before
   static void storeCurrentUrl() {
      System.out.println("storeCurrentUrl()");
      flash.put("url", "GET".equals(request.method) ? request.url : "/");
   }
   static boolean authenticate(String username, String password) {
   ...
   }

   static void onAuthenticated() {
      ...
      String url = flash.get("url");
      System.out.println("url="+url);
      if(!user.isAdmin()) {
         if(url!=null) {
        System.out.println("url not null");
        redirect(url);
     }else {
       System.out.println("url null  ..go to /");
       redirect("/");
    }
      }
   }
Run Code Online (Sandbox Code Playgroud)

当我登录时,我得到这些终端输出

url=null
url null  ..go to /
index()
Run Code Online (Sandbox Code Playgroud)

我已将登录/注销链接放在main.html模板中,该链接由所有其他页面继承

<div id="main">
    <div class="auth">
     <a href="@{Admin.index()}">Go to Admin Area</a><br/><br/>
     <a href="@{Secure.login()}">Login</a><br/><br/>
     <a href="@{Secure.logout()}">Log out</a>
</div>
Run Code Online (Sandbox Code Playgroud)

soj*_*jin 7

在您的控制器中,在调用'login()'之前将'url'放入flash中,如:

flash.put("url", "GET".equals(request.method) ? request.url : "/");
Run Code Online (Sandbox Code Playgroud)

成功登录后,获取"网址"并重定向.

String url = flash.get("url");
redirect(url); //you may redirect to "/" if url is null
Run Code Online (Sandbox Code Playgroud)