package com.jspxcms.core.support; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.jspxcms.core.domain.Site; import com.jspxcms.core.domain.User; import com.jspxcms.core.security.ShiroUser; import com.jspxcms.core.service.SiteService; import com.jspxcms.core.service.UserService; /** * ForeInterceptor * * @author liufang * */ public class ForeInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 站点信息 Site site = siteService.findUniqueSite(); if (site == null) { throw new IllegalStateException("no site found!"); } Context.setCurrentSite(request, site); // 用户登录信息,允许记住用户。 Subject subject = SecurityUtils.getSubject(); if (subject.isAuthenticated() || subject.isRemembered()) { ShiroUser shiroUser = (ShiroUser) subject.getPrincipal(); User user = userService.get(shiroUser.id); Context.setCurrentUser(request, user); } return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // if (modelAndView != null) { // // 重定向不需要加base参数 // String viewName = modelAndView.getViewName(); // if (viewName != null && viewName.startsWith("redirect:")) { // return; // } // modelAndView.getModelMap().addAttribute(Constants.BASE, // request.getContextPath()); // } } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } private UserService userService; private SiteService siteService; @Autowired public void setUserService(UserService userService) { this.userService = userService; } @Autowired public void setSiteService(SiteService siteService) { this.siteService = siteService; } }