【发布时间】:2013-09-29 11:39:49
【问题描述】:
这是我的Interceptor 代码。我的目标是维护所有 URL 的会话,一旦注销完成,用户就无法访问任何 URL。
import java.util.Map;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class AuthenticationInterceptor implements Interceptor {
/**
*
*/
private static final long serialVersionUID = 1L;
public void destroy() {
// TODO Auto-generated method stub
System.out.println("inside the destroy() of interceptor");
}
public void init() {
// TODO Auto-generated method stub
System.out.println("inside the init() of interceptor of new");
}
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub
System.out.println("inside the interceptor()......new");
if(ai.getAction() instanceof LogoutAction){
Map session = ai.getInvocationContext().getSession();
if (session.get("user")!=null){
System.out.println("inside logout of the session");
return ai.invoke();
}
else{
return "login";
}
}
else
return ai.invoke();
}
这是我的注销操作代码:
package com.uttara.reg;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionSupport;
public class LogoutAction extends ActionSupport implements SessionAware {
private Map session;
public void setSession(Map s) {
session = s;
}
@Override
public String execute() throws Exception {
System.out.println("inside execute() of LA");
if(session.get("user")!=null){
session.remove("user");
return "ridirect";
}
return "failure";
}
}
这是我的另一个操作文件,一旦登录完成,用户将开始注册用户我的问题是如何在这里检查会话
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport implements SessionAware {
private static final long serialVersionUID = 1L;
public RegisterAction() {
System.out.println("inside the Register action const.");
}
private RegBean bean;
private Map session;
public RegBean getBean() {
return bean;
}
public void setBean(RegBean bean) {
this.bean = bean;
}
@Override
public String execute() throws Exception {
System.out.println("inside execute method");
System.out.println(bean);
Model m = new Model();
String result = m.register(bean);
if(result.equals(SUCCESS))
return SUCCESS;
else{
addActionError(getText(result));
return "failure";
}
}
@Override
public void validate(){
System.out.println("inside validate method");
}
public void setSession(Map session) {
// TODO Auto-generated method stub
System.out.println("inside setSession");
this.session = session;
}
}
【问题讨论】:
-
正如我在您的代码中看到的,如果他/她之前已注销并尝试再次调用注销操作,您会将用户重定向到登录页面。你真正想要达到什么目的?你能详细解释一下吗?
-
云任何人请帮助
-
我的问题一旦用户登录,我将为他创建会话,之后他可以做任何他想做的事情,一旦他完成注销,他就无法在其中输入 do 功能必须重定向到登录页面坦克你
-
是否需要为登录后创建的所有动作类设置会话
标签: java session struts2 action interceptor