创建sysContext (管理请求)

package com.tp.soft.common.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; public class SysContext {
private static ThreadLocal<HttpServletRequest> reqLocal = new ThreadLocal<HttpServletRequest>();
private static ThreadLocal<HttpServletResponse> resLocal = new ThreadLocal<HttpServletResponse>(); public static void setRequest(HttpServletRequest request){
reqLocal.set(request);
} public static HttpServletRequest getRequest(){
return reqLocal.get();
} public static void setResponse(HttpServletResponse response){
resLocal.set(response);
} public static HttpServletResponse getResponse(){
return resLocal.get();
} public static HttpSession getSession(){
return getRequest().getSession();
}
}

创建拦截器,通过每次请求就创建httpServletRequest

GetContextFilter.java

package com.tp.soft.common.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import com.tp.soft.common.util.SysContext; public class GetContextFilter implements Filter{ public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
SysContext.setRequest((HttpServletRequest) arg0);
SysContext.setResponse((HttpServletResponse) arg1);
arg2.doFilter(arg0, arg1);
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } }

web.xml 拦截器配置

<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>com.tp.soft.common.filter.GetContextFilter</filter-class>
</filter> <filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

aop切面对象 判断权限

package com.tp.soft.aop;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before; import com.tp.soft.common.util.SysContext;
import com.tp.soft.entity.User; @Aspect
public class AdminAspect { @Before("execution(* com.tp.soft.service..*.*(..)) && !execution(* com.tp.soft.service..LoginSvc.*(..))")
public void dealPrivilege() throws Throwable{
HttpSession session = SysContext.getSession();
HttpServletRequest request = SysContext.getRequest();
HttpServletResponse response = SysContext.getResponse();
User user = (User) session.getAttribute("user");
if(user == null){
request.getRequestDispatcher("noPower.jsp").forward(request, response);
} }
}

UserController.java

当访问dologin 再访问toQueryUser即已经存在session 则表示有操作权限,

否则直接访问toQueryUser 则会通过aop 跳转到noPower.jsp

   @RequestMapping(value="/doLogin")
@ResponseBody
public void doLogin(){
User user = new User();
user.setLogin_name("zs");
user.setLogin_pwd("1234");
loginSvc.doLogin("zs", "123");
SysContext.getSession().setAttribute("user", user);
} @RequestMapping(value="/toQueryUser")
public ModelAndView toQueryUser(){
User user = userSvc.getUser(21);
Map<String, Object> map = new HashMap<String, Object>();
map.put("user", user);
return new ModelAndView("/pc/userTest", map);
}

aop(权限控制)的更多相关文章

  1. apringboot aop权限控制

    + 定义切面: ···@Aspect @Component public class LoginInterceptor { @Around("@annotation(lock)") ...

  2. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

  3. 利用基于@AspectJ的AOP实现权限控制

    一. AOP与@AspectJ AOP 是 Aspect Oriented Programming 的缩写,意思是面向方面的编程.我们在系统开发中可以提取出很多共性的东西作为一个 Aspect,可以理 ...

  4. 基于Spring AOP实现的权限控制

    1.AOP简介 AOP,面向切面编程,往往被定义为促使软件系统实现关注点的分离的技术.系统是由许多不同的组件所组成的,每一个组件负责一块特定的功能.除了实现自身核心功能之外,这些组件还经常承担着额外的 ...

  5. c#, AOP动态代理实现动态权限控制(一)

    因最近工作需要一个动态的权限配置功能,具体实现逻辑是c#的动态代理功能,废话不多说,直接干货.需求: 用户分为管理员.普通用户 不同用户拥有不同功能权限 用户的权限可配置 新增功能时,不用修改权限配置 ...

  6. 尝试asp.net mvc 基于controller action 方式权限控制方案可行性

    微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...

  7. springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】

    项目结构:   1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  8. 基于 Annotation 拦截的 Spring AOP 权限验证方法

    基于 Annotation 拦截的 Spring AOP 权限验证方法 转自:http://www.ibm.com/developerworks/cn/java/j-lo-springaopfilte ...

  9. 使用Struts 拦截namespace进行权限控制

    有时候我需要在几个包下都需要进行同一个权限控制.如在购物网站中,我们需要进入个人中心.下订单.评价商品等等都需要进行登录权限控制,但是这几个模块并不是位于同一个package下.Struts提供的拦截 ...

  10. 权限控制框架Shiro简单介绍及配置实例

    Shiro是什么 http://shiro.apache.org/ Apache Shiro是一个非常易用的Java安全框架,它能提供验证.授权.加密和Session控制.Shiro非常轻量级,而且A ...

随机推荐

  1. python tkinter messagebox

    """messagebox消息框""" import tkinter as tk #导入messagebox import tkinter. ...

  2. 一次完整的http请求过程

    转载:https://blog.51cto.com/linux5588/1351007 当我们在浏览器的地址栏输入 www.linux178.com,然后回车,回车这一瞬间到看到页面到底发生了什么呢? ...

  3. Python加密保护-对可执行的exe进行保护

    Python 是一种面向对象的解释型计算机程序设计语言,Python 语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序. 在计算机内部,Python解释器把源代码转换成称为字节的中间形式, ...

  4. keras笔记

    函数式模型 函数式模型算是本文档比较原创的词汇了,所以这里要说一下 在Keras 0.x中,模型其实有两种,一种叫Sequential,称为序贯模型,也就是单输入单输出,一条路通到底,层与层之间只有相 ...

  5. python 计算器

    import redef main(): #""代表的是空,split()方法已空格或者\t,\n进行切割,join方法是列表,元组,字典变为字符串 a = "" ...

  6. Linux系统下的网络配置

    一.修改配置文件,重启后设置不丢失 [Red Hat Linux/CentOS] 使用ifconfig查看使用的网口: [root@localhost /]# ifconfig 修改对应网口配置文件: ...

  7. JDK丨WIN10配置JDK1.8 (解决javac不是内部或外部命令,也不是可运行的程序或批处理文件)

    1.下载JDK,安装. 2.配置JDK. (右键我的电脑 - 属性 - 高级系统设置 - 环境变量.) 2.1 添加系统变量JAVA_HOME 变量名:JAVA_HOME 变量值:C:\Program ...

  8. Splunk 简单笔记

    Splunk Notes source="c:\logs\abc.log" | rex field=url "(?<=\/)(?<ApiId>\w+?) ...

  9. 关于asp.net中链接数据库的问题

    学习了asp.net 有web服务器控件和C#代码两部分 那么在做页面时候,需要用到数据库和asp.net的链接 课本上只是说明了和SQL server的链接,本文介绍如何在.net中链接 Acces ...

  10. linux文件与目录的创建

    在Linux初期的学习中,是我们对基础命令的掌握,首先我们学习文件与目录的创建,分别有一些命令与选项,我们依次来看: 1:在Linux系统中,一切服务皆以文件的形式表现,脚本文件,服务配置文件,记事本 ...