`

基于SHIRO的管理后台权限认证系统实现(二)

阅读更多
用户登陆系统后左侧菜单加载

项目:管理员系统

功能:用户登录后左侧菜单加载

问题:用户登录后由于每个人所拥有的权限不同,所展示出的菜单也不同

效果:用户登录后跳转欢迎页面(无法指定用户跳转地址,因为每个用户的权限均不同),需要刷新后才能看到自己所拥护的访问权限

(注释:由于页面调用VELOCITY中的宏,而宏中定义VELOCITY的自定义函数,且velocity.properties 配置文件中 auto.reload 属性配置为false ,即进入该页面后未能进行velocity的加载,需手动刷新完成对velocity函数的加载)

实现:

1.LOGINACTION -> INDEXACTION -> welcome.vm

若用户登录成功,跳转indexaction ,进行信息定位,指向页面
欢迎页面  通过调用  #displayLeftMenu() 宏  来加载菜单

2.#displayLeftMenu()

宏定义在 VM_global_library.vm 中

#set($menuList = $!UserUtils.menuList())
#foreach($info in $menuList)
#if($info.parentId == 0)
<li class="b-li" s1="$base">
<a href="javascript:void(0)" class="t"><i></i>$info.name</a>
<ul class="box clearfix">
#foreach($info2 in $menuList)
#if($info2.parentId == $info.id)
<li class="sub-li"><a href="$base/$info2.url">$info2.name</a></li>
#end
#end
</ul>
</li>
#end
#end


逻辑解析:

双层遍历:
一层,遍历所有父节点为0 的二级权限,
二层,编辑相应的二级权限下所属的三级权限

3.$!UserUtils.menuList()  Veloctiy自定义授命函数

通过 tools.xml 中配置进行配置

4.tools.xml

<tools> 
    <toolbox scope="request">
    <tool    class="org.apache.velocity.tools.generic.ResourceTool"
             bundles="resources"
             locale="en_US"/>
    </toolbox>
    <toolbox scope="application">
    <tool key="tokenHelper" class="org.apache.struts2.util.TokenHelper" />
    <tool class="org.apache.velocity.tools.generic.NumberTool"/>
    <tool key="UserUtils" class="user.util.UserUtils"></tool> 
   <!-- 指向被调用的函数实体 --> 
    </tool>
    </toolbox> 
</tools>



5.user.util.UserUtils   中方法 menuList

public static List<Permission> menuList(){
Subject currentUser = SecurityUtils.getSubject();
@SuppressWarnings("unchecked")
List<Permission> menuList = (List<Permission>)currentUser.getSession().getAttribute("menuList");
if(menuList == null){
try {
menuList = ServiceUtil.permissionsManagementService.findmenuByUserId(getLoginUser());
currentUser.getSession().setAttribute("menuList", menuList);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}	
logger.info("menuList :"+menuList);
return menuList;
}



说明:

(1)UserUtils 类为final

     不允许继承

final声明的类、方法、成员变量

(2)查询该用户所有权限:

     用户拥有权限分为通过两种途径:通过分配角色间接获取角色所授权的权限
                                   通过特殊授权直接获取的权限

     说明:特殊授权是为分配角色的补充,即用户只希望有这个角色所拥有的权限中的某几个而非全部时的补充措施

(3)在获取权限的同时以去掉所有类型为按钮的权限

     说明:按钮级别的权限理论上是下一级别的权限,其是页面上的按钮权限,先有页面而后有按钮,故其不必显示在左侧菜单上
 
(4)动态控制权限

  • 通过权限管理功能,添加/修改某权限的状态:是否有效,屏蔽展示失效菜单
  • 通过角色管理功能,为某个角色添加权限
  • 通过用户管理功能,为某个用户分配角色(批量赋予权限),特殊授权(直接关联权限)


   
分享到:
评论

相关推荐

    spring boot+shiro 权限认证管理案例

    通过以上步骤,我们可以构建一个集成了 Spring Boot 和 Shiro 的权限认证管理系统,能够实现用户登录、权限校验、会话管理等功能,同时利用缓存提升系统性能。在实际开发中,还可以根据需求扩展 Shiro 功能,例如...

    springboot+shiro+layuimini实现后台管理系统的权限控制

    在构建后台管理系统时,权限控制是至关重要的一个环节,它能确保系统安全,防止非法访问和操作。本项目采用SpringBoot、Apache Shiro以及LayuiMini框架来实现这一目标。接下来,我们将深入探讨这三个技术栈如何协同...

    基于SSM、shiro的企业权限管理系统

    总结,基于SSM和Shiro的企业权限管理系统结合了Spring的依赖注入和AOP特性、Spring MVC的Web处理能力和MyBatis的数据库操作能力,以及Shiro的强大安全控制,共同构建出一个高效、安全的企业级权限管理解决方案。...

    Shiro安全登录认证、权限授权封装模块代码

    在这个项目中,你得到了一个基于 Shiro 的安全登录认证和权限授权的封装模块代码。这个模块可能已经被集成到 SpringBoot 和 MyBatis 框架中,使得在 SpringBoot 应用中轻松实现用户的身份验证和权限控制。 1. **...

    这是一个springboot+vue+shiro的后台权限管理系统,很全.zip

    《基于SpringBoot+Vue+Shiro的后台权限管理系统详解》 在信息技术领域,毕业设计是学生展示其专业技能和理解的重要环节。本项目——“基于SpringBoot+Vue+Shiro的后台权限管理系统”是一个典型的IT毕业设计案例,...

    shiro+后台权限系统项目.zip

    理解基于资源的权限管理 掌握权限管理的数据模型 掌握 Shiro 进行认证的常用方法 掌握 Shiro 进行授权的常用方法 Shiro 整合企业应用开发 http://47.116.138.95:8080/i-admin-1.0-SNAPSHOT/login 账号 jack 密码:...

    【RBAC】基于springboot+shiro实现RBAC权限后台管理系统.zip

    【RBAC】基于springboot+shiro实现RBAC权限后台管理系统.zip 项目结构 |—— ctrl —— 请求层 |—— service —— 业务层 |—— common |—— |—— annotation —— 项目中使用的注解 |—— |—— aspect —— ...

    java+springboot+vue+shiro的后台权限管理系统.rar

    这是一个基于Java技术栈,利用SpringBoot、Vue.js和Shiro框架构建的后台权限管理系统。这个系统主要用于演示和学习如何在实际开发中实现用户权限管理、角色分配以及功能访问控制等功能。下面将详细介绍其中涉及的...

    code.zip基于springBoot+mybatis+shiro+thymeleaf 模板引擎 实现的后台管理系统

    《基于SpringBoot+Mybatis+Shiro+Thymeleaf的后台管理系统详解》 SpringBoot以其简化Spring应用的初始搭建以及开发过程而受到广大开发者喜爱。在这个后台管理系统中,SpringBoot作为核心框架,提供了自动配置、内嵌...

    基于springboot的后台权限管理系统

    【基于SpringBoot的后台权限管理系统】是一个以SpringBoot为核心技术栈的管理平台,它整合了多种框架和技术,为开发者提供了一套完整的权限控制解决方案。SpringBoot以其便捷的配置和快速的开发特性,使得构建此类...

    springboot shiro后台管理系统

    《SpringBoot Shiro后台管理系统详解》 在现代企业级应用开发中,后台管理系统扮演着至关重要的角色,它负责处理各种业务逻辑,管理用户权限,并提供高效稳定的后台服务。本篇文章将深入探讨基于Java的SpringBoot...

    SpringBoot+layui+Thymeleaf+Mybatis+Shiro后台管理系统脚手架

    标题中的"SpringBoot+layui+Thymeleaf+Mybatis+Shiro后台管理系统脚手架"代表了一个基于SpringBoot框架的后台管理系统,该系统利用了一系列技术来构建高效、易用的管理界面。以下是对这些技术及其在系统中的作用的...

    shiro+dwz权限系统

    《基于Shiro+DWZ的权限管理系统实现详解》 在当今的互联网应用中,权限管理是不可或缺的一部分,它确保了用户只能访问他们被授权的资源,保护了系统的安全性和稳定性。本文将深入探讨一个基于Apache Shiro和DWZ...

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

    标题和描述中提到的"基于SpringBoot2 Shiro Thymeleaf的后台管理系统"是一个现代Web应用程序开发的实例,它整合了三个关键的技术组件:Spring Boot、Apache Shiro和Thymeleaf。以下是对这三个技术及其在后台管理系统...

    基于 java EE .Java权限后台管理系统.pdf

    在这个基于 Java EE 的权限后台管理系统中,开发者使用了 Spring MVC、MyBatis 和 Apache Shiro 框架来实现权限管理和控制。这是一个典型的 Model-View-Controller (MVC) 设计模式的应用,其中Spring MVC 负责控制层...

    基于Maven+SSM整合shiro+Redis实现后台管理项目

    在IT行业中,构建一个高效...总的来说,这个项目综合运用了多种Java Web开发技术和安全框架,实现了高效、安全的后台管理系统。对于开发者来说,理解和掌握这些技术,不仅能提升开发效率,也有助于构建更高质量的应用。

    管理系统系列--基于SSM框架简单的后台权限管理系统,整合spring + springmvc + shiro + .zip

    【标题】中的“管理系统系列--基于SSM框架简单的后台权限管理系统”揭示了这是一个关于构建管理系统的教程或项目,它利用了Spring、SpringMVC和Shiro这三个关键的技术组件。SSM框架是Java开发中常用的一个集成框架,...

    spring+mybatis+shiro的基本权限管理后台Demo

    【标题】"spring+mybatis+shiro的基本权限管理后台Demo"揭示了这是一个采用Java Web技术栈实现的权限管理系统原型,主要涉及Spring框架、MyBatis持久层框架以及Apache Shiro安全框架。这个Demo旨在展示如何整合这三...

Global site tag (gtag.js) - Google Analytics