首先思路是
用户登录 获得权限列表 存在加密cookie session什么的
方法用注解修饰 不通的权限有不同的修饰参数
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@interface AnnotationVerify {
/**
* to verify code,
* 定义参数
* @return
*/
public String code();
}
public class SomeAction {
@AnnotationVerify(code = "ADMIN,user")
public static List<String> sayHello(String name,int sex) {
System.out.println("------------hello ------"+name);
List<String> l=new ArrayList<String>();
l.add("Accept");
l.add("PassAccept");
return l;
}
@AnnotationVerify(code = "ADMIN")
public static void sayHelloWorld() {
System.out.println("---------admin---------");
}
public static void main(String[] args) throws Exception {
SomeAction s = new SomeAction();
//代理 获得结果
Map<String,Object> resultMap = s.invoke(s,"sayHello",new Object[]{"赵天明",1});
//判读是否成功 验证权限
if (resultMap.get("success").equals(Boolean.TRUE)) {
System.out.println("执行成功! 结果");
System.out.println(resultMap.get("result"));
} else {
System.out.println("没有权限!");
}
}
/**
* 验证方法权限 并且执行invoke结果
* @param Object proxy
* @param String methodName
* @param Object[] methodParams
* @return Map
* @throws Exception
*/
public Map<String,Object> invoke(Object proxy, String methodName, Object[] methodParams)
throws Exception {
Map<String,Object> resultMap=new HashMap<String,Object>();
Method method = getMethod(proxy.getClass(), methodName);
String verfiyCode = getMethodAnnotation(method);
if (Verfiy(verfiyCode)) {
Object resultObject=method.invoke(proxy, methodParams);
resultMap.put("success",true);
resultMap.put("result",resultObject);
return resultMap;
} else {
resultMap.put("success",false);
return resultMap;
}
}
/**
* 验证权限
* @param code
* @return
*/
public boolean Verfiy(String code) {
String[] codes=code.split(",");
for (VerfiyCode v : VerfiyCode.values()) {
for(String c:codes){
if (v.name().equals(c))
return true;
}
}
return false;
}
/**
* 获得方法
* @param aClass
* @param methodName
* @return
*/
public Method getMethod(Class<? extends Object> aClass, String methodName) {
Method[] methods = aClass.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals(methodName)) {
return method;
}
}
return null;
}
/**
* 获得方法注解信息
* @param method
* @return
*/
public String getMethodAnnotation(Method method) {
AnnotationVerify annotation = method
.getAnnotation(AnnotationVerify.class);
if (annotation != null) {
return annotation.code();
}
return null;
}
}
/**
* 权限类
* @author XiaoMing
*
*/
enum VerfiyCode {
ADMIN, USER,
}
分享到:
相关推荐
在Java编程领域,权限设计是构建安全应用程序的关键组成部分。它涉及到如何管理用户访问资源的权限,确保只有授权的用户或系统组件能够执行特定的操作。在这个主题中,"java用户权限设计"涵盖了多个重要知识点,包括...
在Java后台权限管理中,我们主要探讨的是如何在企业级应用中实现安全、高效和灵活的用户访问控制。Spring MVC框架常被用作构建这部分功能的基础,它提供了强大的MVC设计模式支持,使得开发人员能够方便地处理HTTP...
这篇名为“通过Java注解实现安全控制”的博文主要探讨了如何利用Java注解来加强应用程序的安全性。 Java注解的定义通常以`@`符号开头,后面跟着注解的类型。例如,`@Override`用于确保方法覆盖父类的方法,`@...
在Java开发领域,权限管理是系统安全的重要组成部分。在这个项目中,我们主要关注的是使用SpringMVC、Hibernate和MySQL构建的角色权限系统。SpringMVC作为轻量级的MVC框架,负责处理请求和响应,而Hibernate作为ORM...
Java权限设计是构建安全应用程序的关键组成部分,它涉及到对系统资源的访问控制,确保只有授权的用户和角色才能执行特定的操作。以下是对标题和描述中提到的知识点的详细说明: 1. **实体设计**: 在Java权限设计...
总结来说,这个Java权限管理系统是一个结合了Struts2、Spring和Hibernate技术的Web应用,实现了用户权限和菜单权限的管理,同时具备公司办公自动化功能。这样的系统为企业的信息安全管理提供了有效支撑,确保了不同...
在Java开发中,权限管理模块是企业级应用中不可或缺的一部分,它主要用于控制用户对系统资源的访问,确保数据安全和业务流程的顺畅。本讲解将深入探讨如何在Java环境中实现一个详细的权限模块,以帮助开发者更好地...
"java token验证和注解方式放行"的主题涉及了两个关键概念:Token验证和基于注解的权限管理。Token通常用于验证用户身份,防止未授权的访问。下面我们将深入探讨这两个主题。 首先,Token验证是一种常见的身份验证...
在Java开发领域,登录权限控制是构建任何复杂Web应用程序的核心组成部分。这个项目专注于实现安全的用户身份验证和授权,确保只有经过验证的用户才能访问特定的系统资源。下面将详细介绍这个"java登录权限控制项目...
在IT行业中,权限管理系统是构建安全、高效应用的关键组成部分,特别是在企业级软件系统中。本文将深入探讨基于Java实现的简单权限管理系统,该系统利用了Struts、Hibernate和Spring这三大流行框架的整合来实现其...
在这个场景中,提到的项目可能是一个基于Java实现的用户权限管理系统,可以直接部署在Tomcat应用服务器上。Tomcat是一款广泛使用的开源Java Servlet容器,它能够运行Java Web应用程序。 在Java中,用户权限管理通常...
这里的“java权限控制”主要指的是在Web应用程序中实施的安全策略,以保护敏感数据和操作。过滤器(Filter)是Java Servlet API提供的一种机制,常用于实现这种权限控制。下面将详细探讨这一主题。 1. **Java过滤器...
"java模块级通用权限"是指一种能够应用于不同模块,具有高度可复用性和灵活性的权限控制框架。这种设计旨在为应用程序提供细粒度的访问控制,确保只有经过授权的用户或角色才能执行特定的操作。 **模块化设计** ...
Java 通用权限管理系统是一种在Java平台上实现的,用于管理和控制应用程序访问权限的框架。它能够帮助开发者构建安全、可扩展的应用程序,确保只有授权的用户或系统能够执行特定的操作。在Java中,权限管理通常涉及...
Java EE 是一种企业级的应用开发平台,用于构建分布式、多层的Web应用程序。在这个基于 Java EE 的权限后台管理系统中,开发者使用了 Spring MVC、MyBatis 和 Apache Shiro 框架来实现权限管理和控制。这是一个典型...
【标题】"JAVA SSM项目 包含权限控制"指的是一个基于Java的Web应用程序,它采用了Spring、Spring MVC和MyBatis(简称SSM)这三个主流的开源框架进行开发。这个项目是一个超市购物系统,其核心功能是实现线上购物的...
在Java编程世界里,基础知识是构建复杂应用的基石。"Java基础应用实例"这个主题旨在为初学者提供一系列实用的示例,帮助他们理解和掌握Java编程的基本概念。这些实例覆盖了从简单的数据类型、控制结构到面向对象编程...
通过自动配置、起步依赖和内嵌Web服务器等功能,SpringBoot使得开发者可以快速创建独立运行的Java应用。在"SpringBoot-shiro"项目中,SpringBoot作为基础架构,提供了快速开发的环境。 Shiro是Apache开源组织提供的...
《轻量级Java EE企业应用实战(第三版)》是一本深入浅出的Java EE开发指南,旨在帮助开发者掌握在企业环境中构建高效、轻量级的应用程序。第四章的主题通常会涉及Java EE的核心技术,如Servlet、JSP、JDBC以及...
在Java开发领域,权限控制是实现安全访问控制的关键部分,特别是在构建企业级应用时。本示例"java权限控制demo"旨在演示如何在Spring、SpringMVC和Mybatis框架下实现用户权限管理。这些技术是Java Web开发中的常用...