spring+spring-mvc+mybatis框架权限的实现
来源:互联网 发布:pcb编程工装夹具 编辑:程序博客网 时间:2024/06/05 14:23
/**
* 登陆的时候需要拦截器
* 框架的拦截器体现了一种设计模式(适配器模式)
* 1)实现接口 HandlerInterceptor
* 2)继承父类 HandlerInterceptorAdapter
*
* a)判断用户是否登陆
* b)如果登陆,继续访问
* c)如果没有登陆,跳转回到登陆页面。
* @author 18801
* 登陆的时候需要拦截器
* 框架的拦截器体现了一种设计模式(适配器模式)
* 1)实现接口 HandlerInterceptor
* 2)继承父类 HandlerInterceptorAdapter
*
* a)判断用户是否登陆
* b)如果登陆,继续访问
* c)如果没有登陆,跳转回到登陆页面。
* @author 18801
* */
package com.atguigu.atcrowdfunding.interceptors;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.atguigu.atcrowdfunding.bean.User;public class LoginInterceptor extends HandlerInterceptorAdapter {/** * 在控制器执行之前进行拦截和处理 * 请求可以根据方法的返回结果来确定是否需要继续执行,true,继续执行,false,请求结束 */public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();//判断用户是否登陆User loginUser = (User)session.getAttribute("loginUser");if ( loginUser == null ) {//如果没有登陆,跳转回到登陆页面。 response.sendRedirect(session.getServletContext().getContextPath() + "/login.htm");return false;} else {//如果登陆,继续访问return true;}//}}/** * 此方法在处理器完成之后执行 */public void postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {super.postHandle(request, response, handler, modelAndView);}/** * 此方法在请求结束时(视图渲染完毕)执行 */public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception {super.afterCompletion(request, response, handler, ex);}}
在Spring_-mvc。xml的配置文件加入配置
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/login/index.do"/> <bean class="com.lanke.app.interceptor.LoginInterceptor"></bean> </mvc:interceptor> </mvc:interceptors><mvc:exclude-mapping path="/login/index.do"/>的意思是 对这个链接不进行拦截(可以设置多个)做到这里我们只是让拦截器起拦截作用,接下来是登陆授权(用户的权限是放在session里的)package com.atguigu.atcrowdfunding.interceptors;import java.util.HashSet;import java.util.List;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.atguigu.atcrowdfunding.bean.Permission;import com.atguigu.atcrowdfunding.manager.service.PermissionService;import com.atguigu.atcrowdfunding.util.StringUtil;/** * 授权拦截器 * 只有用户拥有相应的权限,才能发送相应的请求。 * 1)获取请求路径 * 2)判断当前路径需要不需要授权 * 3)如果不需要授权,那么直接访问 * 4)如果需要授权,那么判断当前的用户是否具有相应的权限 * 5)如果有相应的权限,那么继续访问 * 6)如果没有相应的权限,跳转到错误页面 * @author 18801 * */public class AuthInterceptor extends HandlerInterceptorAdapter {@Autowiredprivate PermissionService permissionService;public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {// 1)获取请求路径 String uri = request.getRequestURI(); // 2)判断当前路径需要不需要授权 // 2-1) 获取所有的授权访问路径 Set<String> authPathSet = (Set<String>)request.getSession().getServletContext().getAttribute("authPathSet"); if ( authPathSet.contains(uri) ) { // 4)如果需要授权,那么判断当前的用户是否具有相应的权限 Set<String> userAuthPathSet = (Set<String>)request.getSession().getAttribute("userAuthPathSet"); if ( userAuthPathSet.contains(uri) ) {// 5)如果有相应的权限,那么继续访问 return true; } else {// 6)如果没有相应的权限,跳转到错误页面 response.sendRedirect(request.getSession().getServletContext().getContextPath() + "/error.htm"); return false; } } else {// 3)如果不需要授权,那么直接访问 return true; }}}
简单的权限控制就可以实现了<mvc:exclude-mapping path="/login/index.do"/>的意思是 对这个链接不进行拦截(可以设置多个)用户的权限是放在session里的
阅读全文
0 0
- spring+spring-mvc+mybatis框架权限的实现
- Spring+Spring MVC+MyBatis实现SSM框架整合详细教程
- Spring+Spring MVC+MyBatis实现SSM框架整合详细教程
- Spring + Mvc + Mybatis 框架例子
- spring mvc + mybatis 整合框架
- spring MVC + Mybatis 框架搭建
- spring + spring mvc + mybatis框架整合的maven配置
- spring+spring mvc+mybatis(ssm)三大框架的整合
- Spring MVC + mybatis实现的注册登录
- spring MVC权限分配的实现
- (spring mvc+spring+Mybatis)框架整合
- spring mvc、spring、mybatis框架整合
- SSM(Spring mvc+Spring+Mybatis)框架整合
- Spring+Spring MVC+Shiro+Mybatis框架集成
- spring + spring mvc + mybatis 整合框架
- SSM框架:Spring、Spring MVC、MyBatis学习
- Spring + Spring MVC + Mybatis 框架整合学习
- Spring框架的MVC实现——Spring MVC
- VisionPro--toolblock添加用户脚本
- spring-boot-devtools热部署
- 关于Eclipse中的 Source Folder导致的路径问题
- 分布式事务架构实践
- spring cloud微服务实战读书记
- spring+spring-mvc+mybatis框架权限的实现
- JVM + JMM
- 提交本地项目到github
- Oracle RMAN -不完全恢复
- echarts图表动态获取后台数据详解(一)
- STM32外部中断
- java异步编程
- NPM 设置代理
- 这一年的互联网人