寻找一种优雅的方法,只要应用程序在运行,就可以在后台一直保持Java线程一直在运行,以便JavaFX应用程序检查用户凭证是否有效。
我在Thread
内部所做的事情是在一定间隔后使用户到期
最佳答案
如果要使登录超时,可以使用PauseTransition
使登录过期:
Duration timeout = Duration.minutes(...);
PauseTransition logoutTimer = new PauseTransition(timeout);
logoutTimer.setOnFinished(e -> expireCredentials());
logoutTimer.play();
如果您需要随时重置超时,只需执行
logoutTimer.playFromStart();
它将重置计时器。
您还可以使用JavaFX属性使它在应用程序中易于管理。例如。
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());