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