使用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通过拦截器实现登录控制

本文主要介绍通过SpringMVC拦截器实现登录控制,如果用户没有登录,不允许用户跳转到其他页面,服务器自动重新跳转到登录页面。...
  • psp0001060
  • psp0001060
  • 2016年11月28日 17:03
  • 2703

Spring MVC - 拦截器实现 和 用户登陆例子

1.拦截器   SpringMvc中的拦截器实现了HandlerInterceptor接口,通常使用与身份认证,授权和校验,模板视图,统一处理等;    public class HanderIn...
  • LABLENET
  • LABLENET
  • 2016年01月08日 16:09
  • 29671

SpringMVC用户登录和拦截器简单应用增删改查

SpringMVC和Spring整合,应用存储过程和拦截器,oracle数据库
  • Users0001
  • Users0001
  • 2017年11月18日 14:28
  • 217

SpringMVC拦截器实现登录认证

博客以Demo的形式讲诉拦截器的使用 项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: ...
  • u014427391
  • u014427391
  • 2016年05月15日 22:19
  • 60769

java SpringMVC Filter登录拦截器

SpringMVC框架是一个非常强大的java web框架,目前最主流的也是spring mvc的框架今天我们学习下springMVCd的登录拦截器Filter 首先呢,SpringMVC具有统一的入...
  • qq_14996421
  • qq_14996421
  • 2016年05月10日 13:14
  • 1532

Spring MVC拦截器实现session控制,权限控制

/**  *  * @author geloin  * @date 2012-3-27 下午2:29:35  */ package com.geloin.spring.interceptor...
  • wyj710916422
  • wyj710916422
  • 2014年10月09日 10:49
  • 1531

SpringMVC拦截器实现登录认证(2017修正版)

当使用到springmvc的做网页工程的时候,总会遇到需要判断登陆权限的,一般的做法是每次登陆的话,发送给后台,后台返回一个唯一的token,以便标识用户每一次请求的权限,如果没有登陆成功,则toke...
  • omayyouhappy
  • omayyouhappy
  • 2017年01月18日 16:46
  • 1558

springmvc拦截器实现自动登录

1)实现HandlerInterceptor接口 2)在springmvc的配置文件中配置拦截器使其生效   如: ...
  • u014386474
  • u014386474
  • 2016年05月30日 14:41
  • 1499

SpringMVC拦截器实现登录验证

Spring拦截器说明: 拦截器通过统一拦截从浏览器发往服务器的请求,进行相应的处理,完成功能增强 SpringMVC拦截器是可插拔式设计,使用时,直接在配置文件中应用该拦截器即可 使用场景:解决...
  • source_yuan
  • source_yuan
  • 2017年09月11日 15:10
  • 96

登录检查 springMVC Interceptor拦截器实现登访问

web开发中经常会遇到浏览网页时,需要用户登陆之后才能访问一些重要的页面,当你访问一些“非法”页面时,也就是如果检查你还没有登录进该系统,则需要先登录,只要你成功登录就可以访问信管内容,实现该功能需要...
  • xiachao_tony
  • xiachao_tony
  • 2017年04月19日 14:20
  • 726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用springmvc拦截器进行登录控制
举报原因:
原因补充:

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