注销后,用户也在执行操作,我必须编写哪些代码来防止该注销用户?

时间:2012-11-29 07:28:30

标签: java gwt

所有!注销后,用户也在我创建的网站中执行操作,该网站是用gwt和java开发的,为了防止该用户,我必须编写哪些代码?我的意思是如何编写代码以防止用户在“注销”后进行操作。只要用户在注销后点击页面上的任何链接,他就会看到消息“你还没有登录查看”,这是我的要求。可以有人说吗?....谢谢bala ...

5 个答案:

答案 0 :(得分:1)

如果您使用“活动和地点”方法来构建您的网站。 然后在每个活动开始时,您应该检查会话是否仍然有效。 如果没有,则可以使用goTo(新的LoginPlace(“login”)),也可以使用重定向方法重定向到loginURL。

答案 1 :(得分:1)

您需要将他重定向到您的注销页面/网址,然后使其servlet会话无效。

1)Servlet过滤器,您可以使用httpServletRequest.getSession().invalidate()使会话无效。 http://viralpatel.net/blogs/http-session-handling-tutorial-using-servlet-filters-session-error-filter-servlet-filter/

2)通过一个简单的servlet - Servlet session invalidate

答案 2 :(得分:1)

查看this链接 这解释了如何使用GWT编写登录应用程序

或者像在Code中一样..如果你有MyProfilePlace,MyProfileView则MyProfileActivity看起来像

private ClientFactory clientFactory;

      public MyProfileActivity(MyProfilePlace place, ClientFactory clientFactory) {

    this.clientFactory = clientFactory;

 }

@Override
public void start(AcceptsOneWidget containerWidget, EventBus eventBus) {

            //pseudo code
    if (session invalidated {
        Window.alert("Sorry you are not logged in");
        goTo(new LoginPlace("login"));
    }

    view = clientFactory.getMyProfileView();
    view.setPresenter(this);
    containerWidget.setWidget(view.asWidget());
    System.out.println("Going to your profile");
}

答案 3 :(得分:0)

考虑实际的会话是什么...
现在,请记住维护会话的常见(不是唯一)方式。

也许你会记住像cookies这样的东西 - 如果你(试图)删除/删除/清除服务器上的会话 AND 清除客户端的cookie,你将有效地杀死/删除会话

答案 4 :(得分:0)

当用户点击屏幕上的按钮时,请考虑这种情况。 您可以命中服务器并检查会话是否存活。

(你可以使用jquery来做到这一点)

$('button').click(function(){
     

//进行ajax调用并检查会话是否活着

});

替代这个,

方法可以是定期检查服务器,如果会话有效。 为此需要Servlet方法来检查,这将导致许多服务器出现。

另一种方法是将客户端的计时器与服务器的计时器保持同步。

客户代码:

import com.google.gwt.user.client.Timer;

公共课计时器{

private static final Timer SESSION_MAY_HAVE_EXPIRED = new Timer() {

    @Override
    public void run() {
        // The session may have expired.
        // Go to Login
    }
};

public static void renewSessionTimer() {

    // First cancel the previous timer
    SESSION_MAY_HAVE_EXPIRED.cancel();

    // Schedule again for 5 minutes
    SESSION_MAY_HAVE_EXPIRED.schedule(5 * 60 * 1000);
}

}

当客户端执行RPC调用时,将更新服务器会话超时。

在客户端,您可以在任何操作失败时编写代码。

假设点击我的profile.myprofileService被调用。 然后你可以添加

myProfileService.getUserProfile(...) {

 @Override
 public void onSuccess(String result) {

      ClientTimers.renewSessionTimer();

      // Show user profile
 }

 @Override
 public void onFailure(Throwable caught) {

      if (sessionTimedOut()) {

          // redirect to login

      }   

}

}

我希望这会有所帮助。 干杯:)