в моей пьесе! Приложение, я закодировал контроллеры. Suecurity as
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");
}
}
Я установил маршруты как
GET /admin/? Admin.index
* /admin module:crud
GET / Application.index
, когда я нахожусь на странице, скажем, появится страница, и щелкнула ссылку входа, появляется форма входа, и я могу войти. Если я Войдите как администратор, он отвечает мне в admin.index () и, таким образом, чтобы администратор / index.html представить .so далеко так хорошо
, но, когда я нахожусь на страницеx, и щелкнул на ссылке в систему, я ожидаю вернуться для PageX.instead, метод Application.index () называется, и я доставлен в Application.index.html .. Это ожидаемое поведение? Что мне нужно сделать, чтобы добраться до страницы после входа в систему?
Обновление:
Я пытался хранить URL во флэш-памяти, используя @Before в контроллере безопасности
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("/");
}
}
}
, когда я вхожу в систему, я получаю этот выход клемме
url=null
url null ..go to /
index()
Я положил ссылки в логине / выхода в шаблон 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>