`

shiro直接对类进行注解,类似于@Controller的形式

阅读更多
shiro直接对类进行注解,类似于@Controller的形式


MyPermissionAnnotationHandler
public void assertAuthorized(MethodInvocation mi) throws AuthorizationException {
        RequiresPermissions methodAnnotation = mi.getMethod().getAnnotation(RequiresPermissions.class);
        String[] methodPerms = methodAnnotation.value();
        Subject subject = getSubject();
        if (methodPerms.length == 1) {
            RequiresPermissions classAnnotation = mi.getThis().getClass().getAnnotation(RequiresPermissions.class);
            if(null != classAnnotation) {
                String[] classPerms = classAnnotation.value();
                subject.checkPermission(classPerms[0] + methodPerms[0]);
            } else {
                subject.checkPermission(methodPerms[0]);
            }
            return;
        }
        if (Logical.AND.equals(methodAnnotation.logical())) {
            getSubject().checkPermissions(methodPerms);
            return;
        }
        if (Logical.OR.equals(methodAnnotation.logical())) {
            // Avoid processing exceptions unnecessarily - "delay" throwing the exception by calling hasRole first
            boolean hasAtLeastOnePermission = false;
            for (String permission : methodPerms) if (getSubject().isPermitted(permission)) hasAtLeastOnePermission = true;
            // Cause the exception if none of the role match, note that the exception message will be a bit misleading
            if (!hasAtLeastOnePermission) getSubject().checkPermission(methodPerms[0]);
 
        }
    }
分享到:
评论

相关推荐

    shiro+springmvc整合demo

    - 在Controller中使用Shiro进行权限检查,例如 `@RequiresPermissions`、`@RequiresRoles` 注解。 - 编写User、Role、Permission实体,以及对应的Repository接口。 这个整合Demo为开发者提供了一个起点,帮助他们...

    管理系统系列--使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例.zip

    在SpringBoot的Controller层,我们可以使用Shiro的注解(如@RequiresPermissions、@RequiresRoles)来控制方法级别的访问权限。但为了实现动态权限,我们需要编写一个自定义的权限注解,该注解可以根据当前用户的...

    shiro-springboot:小D课堂shiro与springboot整合项目实战

    Realms是数据源,用于获取用户的认证和授权信息,而Filters则类似于Servlet中的Filter,用于拦截和处理请求。 二、SpringBoot集成Shiro 1. 配置依赖:在SpringBoot项目中,我们需要在pom.xml文件中引入Shiro和相关...

    基于SpringBoot2+Shiro+Thymeleaf的后台管理系统.zip

    它适用于毕业设计、课程设计等应用场景,所有源码都经过测试,可以直接运行,无需额外配置,方便快捷。 【知识点详解】 1. **SpringBoot2**: SpringBoot是Spring框架的一个简化版,旨在简化Spring应用的初始搭建...

    基于SSM的图书馆管理系统源码.zip

    理解并掌握这些知识点,有助于开发者构建类似的应用程序,或者对现有系统进行维护和扩展。在实际项目中,还需要考虑性能优化、数据缓存、日志记录、数据库事务处理等更多方面,以构建更完善的系统。

    基于SSM的中学校园网站系统源码.zip

    开发者可以通过定义@Controller注解的类和方法来处理HTTP请求,使用@RequestParam、@PathVariable等注解来获取请求参数。 MyBatis是一个轻量级的持久层框架,它允许开发者通过编写SQL语句来操作数据库,避免了JDBC...

    SSM框架写的一个增删改查,适合初学者看看,

    此外,通过集成Spring Security或Shiro等安全框架,可以对用户的操作进行权限控制。 总结起来,SSM框架是Java Web开发中的重要工具,它将Spring的IoC和AOP特性、SpringMVC的MVC设计模式以及MyBatis的灵活数据库操作...

    y_project-RuoYi-master.zip

    这种方式既避免了传统的JDBC代码的繁琐,又保留了对SQL的直接控制,提高了数据库操作的效率。 3. **Shiro**:安全框架Apache Shiro负责处理系统的授权、认证和会话管理。用户登录验证、角色权限分配、会话管理等...

    基于javaMVC的管理员管理系统

    Java MVC架构是开发Web应用程序的一种常见模式,尤其适用于构建管理员管理系统。这个基于Java MVC的管理员管理系统项目涵盖了核心的Java编程、Spring MVC框架、数据库交互等多个关键知识点。下面将详细阐述这些概念...

    JFinal+freemarker+maven demo实例

    2. **模板语法**:FreeMarker使用类似于`<#if>`、`<#foreach>`等标签进行条件判断和循环,便于模板编写。 3. **分离前后端**:FreeMarker的使用使得业务逻辑与视图展示分离,提高了代码的可读性和可维护性。 再来看...

    基于ssm+jsp学习视频资源库的系统.zip

    SpringMVC处理客户端请求,通过DispatcherServlet分发请求到对应的Controller,Controller则根据业务逻辑调用Service层的方法进行处理。MyBatis作为数据访问层,通过XML或注解方式编写SQL,实现了数据库的增删改查...

    基于SSM的健康体检管理系统源码.zip

    5. **权限控制**:系统可能采用Spring Security或Apache Shiro进行权限控制,确保不同角色的用户只能访问其权限范围内的功能。例如,管理员可以查看所有体检记录,而普通用户只能查看自己的。 6. **页面设计**:...

    java源码 仿360buy京东商城源码 京东JavaWeb项目源代码.zip

    该压缩包文件“java源码 仿360buy京东商城源码 京东JavaWeb项目源代码.zip”包含了实现一个类似360buy京东商城功能的JavaWeb项目的完整源代码。这个项目旨在帮助开发者理解大型电子商务平台的后端架构、前端界面设计...

    SSM框架的快递配送系统

    10. **安全控制**:使用Spring Security或Apache Shiro等安全框架,可以对用户登录、权限控制等进行管理,确保系统的安全性。 11. **异常处理**:统一的异常处理机制可以提高系统的健壮性,例如使用@...

    青鸟租房网,使用了Hibernate+Struts框架

    《青鸟租房网系统:Hibernate与Struts2的深度整合》 在当今互联网技术日新月异的时代,租房网站已经成为城市居民寻找...对于开发者来说,理解和掌握这些技术,有助于提升个人技能,并为参与类似项目提供宝贵的经验。

    基于SSM的土家风景文化管理平台(有报告) Javaee项目 ssm项目

    context.xml以及MyBatis的mybatis-config.xml)、实体类(Entity)、DAO接口及其实现类、Service接口及其实现类、Controller以及视图文件(如JSP或HTML)。项目中可能还包含了单元测试和集成测试,确保各个组件的...

    SSM项目在线考试系统.zip

    这个项目不仅适用于学习者理解SSM框架的整合与应用,还能够帮助开发者在实际工作中快速构建类似的系统。下面将详细阐述该项目中的关键知识点。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了依赖...

    jfinal freemarker mysql

    它的主要特点包括:零配置,通过注解实现MVC模式,内置丰富的插件支持,如Shiro安全框架、Quartz任务调度等,极大地简化了开发流程。 其次,Freemarker则是一个强大的模板引擎,它与JSP、Velocity等模板引擎类似,...

    【ssm项目源码】超市信息管理系统.zip

    【ssm项目源码】超市信息管理系统是一个基于Java技术栈的Web应用,主要采用了Spring、SpringMVC...通过深入研究此源码,开发者可以提升自己的技能,同时也可以借鉴其中的设计思路和最佳实践,应用于其他类似的项目中。

Global site tag (gtag.js) - Google Analytics