每次用户更改视图时调用的logout方法

时间:2016-04-15 17:08:00

标签: jsf

我的LoginBacking@ManagedBean@ViewScoped)有两种方法:login(User)logout()。两者都被委托给@Stateless UserLogin服务方法。从那里我"保存"我的Authorization班级(@SessionScope)中的用户。成功登录后会发生以下情况:

每当我换到另一个视图(无论哪个页面)时,它都会调用logout()。我会显示一个日志:

18:44:08,266 INFO  [at.mkx.app.service.UserSignup] (default task-47) Sign up: a@a.a
18:44:08,275 INFO  [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (default task-47) HHH000397: Using ASTQueryTranslatorFactory
18:44:08,291 INFO  [at.mkx.app.service.UserSignup] (default task-47) Signed up: id=1, email=a@a.a, password=0423fb1197c3e5ad2b21f59ce5d9c475cf56befdc9e992e4d71e06742a691a76, roles=[id=1, name=user]
18:44:39,424 INFO  [at.mkx.app.service.UserLogin] (default task-51) Log in: a@a.a
18:44:39,454 INFO  [at.mkx.app.service.UserLogin] (default task-51) Logged in: id=1, email=a@a.a, password=0423fb1197c3e5ad2b21f59ce5d9c475cf56befdc9e992e4d71e06742a691a76, roles=[id=1, name=user]
18:44:48,122 INFO  [at.mkx.app.service.UserLogin] (default task-52) Log out!? wtf?
18:44:55,195 INFO  [at.mkx.app.service.UserLogin] (default task-53) Log out!? wtf?
18:45:02,461 INFO  [at.mkx.app.service.UserLogin] (default task-54) Log out!? wtf?

最后3行是对带链接的其他视图的简单更改。有谁知道这里可能出现什么问题?

其他信息:我删除了指向logout()的视图中的所有链接。此外,我在LoginBackingUserLogin中添加了两个假方法。正如@Korgen所提到的,我也记录了托管bean。

public void logout() {
    log.info("LoginBacking: calls userLogin.logout()");
    userLogin.logout();
}

public void foo() {
    log.info("LoginBacking: Fake method");
    userLogin.foo();
}

public void logout() {
    log.info("UserLogin: Log out, No existing links in the views");
    // TODO: Implement logout
}

public void foo() {
    log.info("UserLogin: Fake method");
}

日志:

07:57:28,805 INFO  [at.mkx.app.controller.LoginBacking] (default task-21) LoginBacking: calls userLogin.logout()
07:57:28,810 INFO  [at.mkx.app.service.UserLogin] (default task-21) UserLogin: Log out, No existing links in the views
07:57:40,721 INFO  [at.mkx.app.controller.LoginBacking] (default task-22) LoginBacking: calls userLogin.logout()
07:57:40,721 INFO  [at.mkx.app.service.UserLogin] (default task-22) UserLogin: Log out, No existing links in the views
07:57:55,549 INFO  [at.mkx.app.service.UserSignup] (default task-38) Sign up: martin@hell.zz
07:57:55,559 INFO  [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (default task-38) HHH000397: Using ASTQueryTranslatorFactory
07:57:55,559 INFO  [at.mkx.app.service.UserSignup] (default task-38) Signed up: id=1, email=martin@hell.zz, password=b89ae12948261984da6ad7d27e7411cb760f971927ae5e8c8b09d9e6b0554319, roles=[id=1, name=user]
07:58:07,058 INFO  [at.mkx.app.controller.LoginBacking] (default task-34) LoginBacking: calls userLogin.logout()
07:58:07,067 INFO  [at.mkx.app.service.UserLogin] (default task-34) UserLogin: Log out, No existing links in the views
07:58:14,344 INFO  [at.mkx.app.controller.LoginBacking] (default task-43) LoginBacking: calls userLogin.logout()
07:58:14,344 INFO  [at.mkx.app.service.UserLogin] (default task-43) UserLogin: Log out, No existing links in the views
07:58:40,641 INFO  [at.mkx.app.service.UserLogin] (default task-51) Log in: martin@hell.com
07:58:54,600 INFO  [at.mkx.app.service.UserLogin] (default task-50) Log in: martin@hell.zz
07:58:54,616 INFO  [at.mkx.app.service.UserLogin] (default task-50) Logged in: id=1, email=martin@hell.zz, password=b89ae12948261984da6ad7d27e7411cb760f971927ae5e8c8b09d9e6b0554319, roles=[id=1, name=user]
07:59:13,328 INFO  [at.mkx.app.controller.LoginBacking] (default task-52) LoginBacking: calls userLogin.logout()
07:59:13,329 INFO  [at.mkx.app.service.UserLogin] (default task-52) UserLogin: Log out, No existing links in the views

首次退出只是index.html的开始。第二个是切换到注册视图,接下来的两个注销是切换到任何其他视图,一个切换到登录视图。

现在我更加困惑了。在视图中没有任何链接,它仍然无意中调用注销。为什么它也不称之为假方法呢?

编辑:&#34;解决方案&#34; 调试并没有让我更聪明。我仍然无法识别,谁在呼叫logout()。删除该方法只会导致首页index.html抱怨他无法找到userBacking.logout()(注意:index.html只是一行:<h1>Leck mi am Oarsch!</h1>)。清理/重新启动wildfly10和应用程序也没有帮助。最后,我完全踢了服务器并使用了一个全新的野生萤火虫实例。嘿,突然它起作用了!我再次实现了logout(),现在它实现了,它应该是什么。还要感谢@BalusC和@Korgen试图提供帮助!

所以我应该记住未来:只要在关闭的窗口外面愤怒地踢服务器,然后买一个新的!

0 个答案:

没有答案