通过注解@做细粒度权限控制

先定义一个注解

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationLimit {
    String mid();
    String pid();
}
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
        Method method = TestExc.class.getDeclaredMethod("hehe", String.class);
        if(method.isAnnotationPresent(AnnotationLimit.class)){
            AnnotationLimit an = method.getAnnotation(AnnotationLimit.class);
            System.out.println(an.mid()+"#" + an.pid());
        }else{
            System.out.println("no limit");
        }
    }

    @AnnotationLimit(mid="1", pid="2")
    static void hehe(String s){
        System.out.println("nnn");
    }

粗粒度权限控制,一般是通过session进行,session的话因为用户登录后修改数据库状态后,用户不能通过数据库实时查询进行控制。

通过注解可以得到配置信息再结合用户id进行实时查询看是否能访问url所对应的方法达到细粒度权限控制。

时间: 2024-11-05 20:43:26

通过注解@做细粒度权限控制的相关文章

(转)通过SpringMVC+Annotation实现方法、按钮级别的细粒度权限控制

原文地址:http://blog.csdn.net/ycyk_168/article/details/18456631 随着企业信息化的不断深入,各种各样的信息系统成为提高企业运营及管理效率的必备工具,越来越多的企业核心机密如销售机会.客户资料.设计方案等通过信息系统存储.备案.流转,这些核心资料一旦外泄,势必对企业造成极大损失.科技时代,信息是企业生存的命脉,信息的安全也必然成为企业极度重视的问题.如今,随着各种信息安全措施的实施,信息泄密已经从外部泄漏向内部人员泄漏转移.外部的黑客.病毒要想

SpringMVC+Annotation实现方法、按钮级别的细粒度权限控制

常用的权限系统设计模式是以角色为核心的,即角色是具有相同权限的一类人员的集合: 1.     一个角色可以有包含多个操作人员,一个操作人员也可以属于多个角色 2.     一个角色可以具有多个功能的操作权限,一个功能也可以被多个角色所拥有. 在登录时通过查询登录用户所属角色,即可得到个用户的所有功能集合,如下图: 多数业务系统的页 面功能菜单设计是以三级为标准的,即一级功能菜单.二级功能菜单.三级功能菜单,通常情况下一二级功能菜单只是用于功能分类,是不具有功能访问地址的,三 级菜单才是功能的真正

使用nginx和iptables做访问权限控制(IP和MAC)

之前配置的服务器,相当于对整个内网都是公开的 而且,除了可以通过80端口的nginx来间接访问各项服务,也可以绕过nginx,直接ip地址加端口访问对应服务 这是不对的啊,所以我们要做一些限制 因为只是对特定的人提供服务,而且局域网IP和MAC都是固定的,所以可以直接用白名单,其他的全部拒绝 /**************************************使用nginx做访问权限控制*********************************/ 先在nginx做设置 在/et

粗粒度与细粒度权限控制

1.1   什么是粗粒度和细粒度权限 粗粒度权限管理,对资源类型的权限管理.资源类型比如:菜单.url连接.用户添加页面.用户信息.类方法.页面中按钮.. 粗粒度权限管理比如:超级管理员可以访问户添加页面.用户信息等全部页面. 部门管理员可以访问用户信息页面包括 页面中所有按钮. 细粒度权限管理,对资源实例的权限管理.资源实例就资源类型的具体化,比如:用户id为001的修改连接,1110班的用户信息.行政部的员工. 细粒度权限管理就是数据级别的权限管理. 细粒度权限管理比如:部门经理只可以访问本

基于session做的权限控制

一直听说做权限将登陆信息放在session中,实际也说不太出个所以然来,幸运在工作当中接触到了对应的代码的copy. 实现思路: 类似于粗粒度的权限控制 将权限控制的文件按包分隔好,对应的url前缀也遵照一些标准统一. 定义包装用户信息类,包括登录后的用户信息和登录状态,用户授权信息等 使用过滤器,拦截通用请求.登录请求之外的所有请求. 过滤器中进行session中包装用户信息类是否存在,是否登录,如果有且有效则跳转对应页面,无则跳转登录页面 登录完成在session中写入用户的具体信息,包括登

关于细粒度权限控制的考量

权限控制可以说是每个项目的必备基础模块,不讨论RBAC和ACL,只是自己的想法. 我眼中的权限控制: 作用:用于控制功能或资源的访问,仅此而已. 无论是SpringMVC的拦截器,还是Struts的拦截器,拦截地址栏操作都是那么的简单. 问题在于如何将权限控制在页面级别,例如,按钮,某个资源元素等. 关于命名约定的问题: 例如添加功能: @RequestMapping(value="/role/add.jhtml",RequestMethod=GET) @RequestMapping(

038 使用shiro的方法注解方式进行权限控制 - bos

1.在Spring的配置文件中开启shiro的注解支持 <!-- 开启shiro框架注解支持 --> <bean id="defaultAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> <!-- 表示必须使用cglib方式为Action创建动态代理对象 --> &l

了解权限控制框架shiro 之实际应用.

Apache Shiro 1.权限控制分为 a.粗粒度 URL 级别权限控制     b.细粒度方法级别权限控制 2.使用shiro进行权限控制主要有四种主要方式 : a. 在程序中 通过 Subject 编程方式进行权限控制 b. 配置 Filter 实现 URL 级别粗粒度权限控制 c. 配置代理,基于注解实现细粒度权限控制 d. 在页面中使用 shiro 自定义标签实现 页面显示权限控制 3.shiro实际应用之基本配置: a.用父工程引入shiro b.配置web.xml c.配置app

2.4.4.3、Django用user表last_name字段做权限控制

这不是最好的方法! 数据库User表中因为是系统初始化的表,如果添加额外的字段需要修改django源文件,不利于移植,为避免带来其他问题,可以使用last_name字段做为权限控制,当然也可以用profile方法为user表添加新字段(对于user表示一对一关系,但不是在User表中),session在用户登录之后会一直存储user的信息,所以用user表中的字段在html中引用实现更简单一点(group可以在视图里使用) 如下图: 在http://10.1.1.145:8000/admin/a