[英]gwt- is it safe to use oauth through GWT in a native or web app
[英]GWT- History Management for web application
我正在为我的应用程序进行历史记录管理。 我有两个视图,一个是登录名,另一个是主应用程序。 我添加了本地链接#login和#application。 现在理想情况下应该发生的是,当用户打开应用程序时,他应该看到带有#login令牌的登录视图。 工作正常。 然后,当他的凭据经过验证后,他将使用令牌#application进入应用程序视图。 当他注销时,他返回到#login。 所有这些都很好。 但是令我困扰的是,当我手动将链接令牌从#login更改为#application时,即使注销后主应用程序仍会直接打开。 但是,当我在新标签中尝试相同的操作时,效果很好。 该应用程序容易受到需要修复的攻击。 我需要一些帮助。
//When application loads
History.newItem("application",true);
//When login screen loads //
History.newItem("login",true);
//On change
History.addValueChangeHandler(new ValueChangeHandler<String>(){
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
if (historyToken.substring(0, 5).equals("login")) {
login();
}
if (historyToken.substring(0, 11).equals("application")) {
mainApplicationView();
}
});
注销时,将调用login()方法,该方法会将相关面板加载到RootPanel中,并且内部也包含#login令牌。 同样,主应用程序面板也从rootpanel中删除。
错误是在第二个条件内:
History.addValueChangeHandler(new ValueChangeHandler<String>(){
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
if (historyToken.substring(0, 5).equals("login")) {
login();
}
if (historyToken.substring(0, 11).equals("application")) {
startApplication(); //it will again check if the session is valid. If not, login screen will show up. Else mainApplication.
}
});
注销后,无论如何都不允许我查看应用程序页面。 因此,我应该确保sessionID有效。 当应用程序启动时,我只执行了一次,但是在History.addChangeHandler下却没有。 这是一个错误。
String sessionID = Cookies.getCookie("JSESSIONID");
if(sessionID == null) {
login();
} else {
checkWithServer();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.