使用springmvc拦截器进行登录控制
来源:互联网 发布:数组怎么用计算平均值 编辑:程序博客网 时间:2024/05/14 16:26
使用springmvc拦截器和session控制登录和获取登录用户的信息。
1.LoginInterceptor.java 解析session,获取登录用户信息。
public class LoginInterceptorimplements HandlerInterceptor {
protectedstatic final Loggerlogger = Logger.getLogger(LoginInterceptor.class);
private SystemConfigsystemConfig;
public void setSystemConfig(SystemConfig systemConfig) {
this.systemConfig =systemConfig;
}
public boolean preHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler)throws Exception {
Cookie[] cookies =request.getCookies();
if(cookies ==null) {
returntrue;
}
for(Cookiecookie : 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);
}
}
}
returntrue;
}
public void postHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler, ModelAndViewmodelAndView) throws Exception {
if(modelAndView !=null) {
modelAndView.addObject("loginUser", LoginContextHolder.getLoginUser());
}
}
public void afterCompletion(HttpServletRequest request, HttpServletResponseresponse, Object handler, Exceptionex) throws Exception {
LoginContextHolder.clear();
}
protected UserDO decode(Stringcontent) {
if(StringUtils.isBlank(content)) {
returnnull;
}
JSONObject json = JSONObject.fromObject(content);
UserDO user =new UserDO();
user.setId(json.getInt("id"));
user.setName(json.getString("name"));
returnuser;
}
}
2,securityInterceptor.java 控制用户登录
public class SecurityInterceptorimplements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler)throws Exception {
// TODO Auto-generated method stub
LoginContext context = LoginContextHolder.get();
if(context !=null && context.getUser() !=null) {
returntrue;
}
response.sendRedirect("login.jhtml");
returnfalse;
}
public void postHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler, ModelAndViewmodelAndView) throws Exception {
// TODO Auto-generated method stub
}
public void afterCompletion(HttpServletRequest request, HttpServletResponseresponse, Object handler, Exceptionex) throws Exception {
// TODO Auto-generated method stub
}
}
3.LoginContext.java 存放登录上下文信息。
public class LoginContext {
private UserDOuser;
public UserDO getUser() {
returnuser;
}
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);
}
publicstatic 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:mappingpath="/upload/**"/>
<beanclass="com.moin.web.interceptor.LoginInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mappingpath="/upload/**"/>
<beanclass="com.moin.web.interceptor.SecurityInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
- 使用springmvc拦截器进行登录控制
- SpringMVC拦截器实现登录控制
- SpringMVC通过拦截器实现登录控制
- SpringMVC配置拦截器实现登录控制
- SpringMVC拦截器实现登录控制
- springMVC拦截器进行登录验证
- SpringMvc使用拦截器实现登录认证
- springmvc登录拦截器
- SpringMVC登录拦截器
- springMVC拦截器使用之登录拦截器
- springMVC—拦截器的实现登录控制
- 使用拦截器进行权限的控制
- 使用拦截器进行权限控制
- SpringMVC 登录拦截器实现
- springMVC 拦截器 登录管理
- SpringMvc拦截器登录处理
- SpringMVC拦截器实现登录
- SpringMVC拦截器:登录拦截器
- leetcode_389 Find the Difference
- Opencv中的Mat类使用方法总结
- 建议8: 避免给枚举类型的元素提供显式的值
- 质数筛选--快速筛选出小于等于N的质数
- Android0828(二)
- 使用springmvc拦截器进行登录控制
- Java环境变量配置
- struct在C和C++中的区别
- 文章标题
- 几篇不错的文章
- typeof、instanceof和contructor的使用
- ubuntu 启动流程
- RecyclerView 项目集合
- PHP Zend引擎 学习