在我的戏里!应用程序,我已将 controllers.Security 编码为
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
当我在一个页面上说 pageX 并单击登录链接时,会出现登录表单并且我可以登录。如果我以 admin 身份登录,它会将我带到 Admin.index() 并由此进入 Admin/index.html观点。到目前为止一切都很好
但是,当我在 pageX 上并单击登录链接时,我希望回到 pageX。相反,Application.index() 方法被调用,我被带到 Application.index.html .. 这是预期的吗行为?登录后我需要做什么才能访问 pageX?
更新:
我尝试使用安全控制器中的 @Before 将 URL 存储在闪存中
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>