一 现象
系统管理员登陆
同一浏览器下登陆厂商管理员用户
由于顶部菜单栏是存在Session中,当浏览前一个系统管理员界面时,点击菜单选项会从后一个登陆的Session中获取菜单栏内容。
二 修正
增加一个拦截器,当Session存在时重定向到Home页面
LoginInterceptor.java
package jp.co.actoweb.core.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import jp.co.actoweb.core.Constants;
public class LoginInterceptor implements HandlerInterceptor {
private String homeUrlMapping;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session = request.getSession();
if (session != null && session.getAttribute(Constants.SESSION_KEY_AUTH_INFO) != null) {
response.sendRedirect(request.getContextPath() + getHomeUrlMapping());
return false;
}
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
public String getHomeUrlMapping() {
return homeUrlMapping;
}
public void setHomeUrlMapping(String homeUrlMapping) {
this.homeUrlMapping = homeUrlMapping;
}
}
mvc-config.xml中关于该拦截器的配置
<bean id="loginInterceptor" class="jp.co.actoweb.core.interceptor.LoginInterceptor">
<property name="homeUrlMapping" value="/admin/home/init.do" />
</bean>
<mvc:interceptor>
<mvc:mapping path="/**/admin/welcome.do"/>
<ref bean="loginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>