寻找一种优雅的方法来保持Java线程在后台始终运行,只要应用程序正在运行,JavaFX应用程序检查以查看用户凭据是否有效。
我在Thread
内要做的事情是在某个时间间隔之后使用户失效
答案 0 :(得分:3)
如果您想超时登录,可以使用PauseTransition
使登录失效:
Duration timeout = Duration.minutes(...);
PauseTransition logoutTimer = new PauseTransition(timeout);
logoutTimer.setOnFinished(e -> expireCredentials());
logoutTimer.play();
如果您需要在任何时候重置超时,您可以执行
logoutTimer.playFromStart();
它将重置计时器。
您还可以使用JavaFX属性在应用程序中轻松管理。 E.g。
private BooleanProperty loggedIn = new SimpleBooleanProperty();
// ...
public void expireCredentials() {
loggedIn.set(false);
}
然后要求用户登录的操作可以检查此属性:
if (loggedIn.get()) {
doSecureOperation();
}
和UI控件可以将它们的状态绑定到它:
submitSecureDataButton.disableProperty().bind(loggedIn.not());
loginButton.disableProperty().bind(loggedIn);
或者
private ObjectProperty<Credentials> credentials = new SimpleObjectProperty<>();
// ...
public void expireCredentials() {
credentials.set(null);
}
// ...
submitSecureDataButton.disableProperty().bind(credentials.isNull());
loginButton.disableProperty().bind(credentials.isNotNull());