使用springmvc拦截器进行登录控制

转载 2016年08月29日 20:38:15

使用springmvc拦截器和session控制登录和获取登录用户的信息。

 1.LoginInterceptor.java 解析session,获取登录用户信息。

public class LoginInterceptor implements HandlerInterceptor {


protected static final Logger logger = Logger.getLogger(LoginInterceptor.class);

private SystemConfig systemConfig;


public void setSystemConfig(SystemConfig systemConfig) {

this.systemConfig = systemConfig;

}

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

Cookie[] cookies = request.getCookies();

if(cookies == null) {

return true;

}

for(Cookie cookie : cookies) {

String key = cookie.getName();

String content = cookie.getValue();

if(key.equalsIgnoreCase(systemConfig.getCookieKey())) {

if(StringUtils.isNotBlank(content)) {

String source = DESUtils.decrypt(content, systemConfig.getCookieSecurityKey());

UserDO user = this.decode(source);

LoginContext context = new LoginContext();

context.setUser(user);

LoginContextHolder.set(context);

}

}

}

return true;

}


public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

if(modelAndView != null) {

modelAndView.addObject("loginUser", LoginContextHolder.getLoginUser());

}

}


public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

LoginContextHolder.clear();

}


protected UserDO decode(String content) {

if(StringUtils.isBlank(content)) {

return null;

}

JSONObject json = JSONObject.fromObject(content);

UserDO user = new UserDO();

user.setId(json.getInt("id"));

user.setName(json.getString("name"));

return user;

}


}


2,securityInterceptor.java 控制用户登录

public class SecurityInterceptor implements HandlerInterceptor {


public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

// TODO Auto-generated method stub

LoginContext context = LoginContextHolder.get();

if(context != null && context.getUser() != null) {

return true;

}

response.sendRedirect("login.jhtml");

return false;

}


public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

// TODO Auto-generated method stub

}


public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

// TODO Auto-generated method stub

}


}


3.LoginContext.java 存放登录上下文信息。


public class LoginContext {

private UserDO user;


public UserDO getUser() {

return user;

}


public void setUser(UserDO user) {

this.user = user;

}

}


4.LoginContextHolder.java 使用ThreadLocal<LoginContext>存取用户信息。


public class LoginContextHolder {


private static final ThreadLocal<LoginContext> holder = new ThreadLocal<LoginContext>();


public static LoginContext get() {

return holder.get();

}

public static void set(LoginContext context) {

holder.set(context);

}

public static void clear() {

holder.remove();

}

public static UserDO getLoginUser() {

LoginContext context = holder.get();

return context == null ? null : context.getUser();

}


5.使用springMvc的拦截器对链接路径进行控制

<mvc:interceptors>

  <mvc:interceptor>

  <mvc:mapping path="/upload/**" />

  <bean class="com.moin.web.interceptor.LoginInterceptor" />

  </mvc:interceptor>

  <mvc:interceptor>

  <mvc:mapping path="/upload/**" />

  <bean class="com.moin.web.interceptor.SecurityInterceptor" />

  </mvc:interceptor>

  </mvc:interceptors>


springmvc+mybatis登录验证2.0(更新了使用session来进行保存用户值,注销后清除session),并进行了拦截器的设定

本次在之前的文章实现登录注册的基础上又进行了新的升级,主要是采用了session和拦截器来对功能进行完善 新的Controller层 package lyb.com.controller; im...

springmvc里使用注解进行拦截器配置

springmvc本身不能像struts2那样使用注解拦截action,这在使用中非常不方便,我们来扩展下springmvc,增加一个类,就可以实现注解拦截器....

使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

SpringMVC登录拦截器

  • 2017年01月20日 10:49
  • 13.42MB
  • 下载

SpringMVC拦截器的使用

  • 2017年12月02日 16:10
  • 8.34MB
  • 下载

使用拦截器进行权限控制

代码: login.jsp struts2 拦截器应用 用户登录 ${requestScope.tip} 看咪咪^_^ loginsuccess.js...

struts2如何使用拦截器进行用户权限控制

大多数网站会设置用户权限,如过滤非法用户,用户不登录时不能进行访问,或者设置访问的权限,如部分内容仅对VIP开放等等,这些权限的控制都可以用struts2中的拦截器来实现。 下面通过一个简单的Dem...

Struts2中使用拦截器进行权限控制

拦截器:interceptor进行身份验证,判断是否是合法用户   1:jsp(登录) String path = request.getContextPath(); String ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用springmvc拦截器进行登录控制
举报原因:
原因补充:

(最多只允许输入30个字)