`

在通过定义标签来动态的显示权限是出现的错误

阅读更多

目标:通过自定义标签来实现动态的显示权限

出现的问题:没有像预期一样显示用户所拥有的权限而是将权限都显示出来了


在复写了org.apache.struts2.views.jsp.ui里的类AnchorTag并且在struts.xml中加了相对应的拦截器,但是没有起到作用


解决办法

结果发现是在查询所有权限的时候将要求:所有权限为不是Null和不是重复的写成了null的了,从而导致了在AnchorTag中的判断是否是通用权限的时候逻辑出错了,从而引发了上面的错误


//这个类的作用就是可以起到在使用标签的时候判断用户是否拥有此权限,从而判断是否执行标签

@Override
	public int doEndTag() throws JspException {
    	
    	//当前用户
    	User user = (User) pageContext.getSession().getAttribute("user");
    	//当前的URL,如果有参数就要去掉后面的参数字符串
    	String privilegeUrl = action;
    	int pos = privilegeUrl.indexOf("?");
    	if(pos > -1){
    		privilegeUrl = privilegeUrl.substring(0,pos);
    	}
    	
    	if(user.hasPrivilegeByUrl(privilegeUrl)){
    		return super.doEndTag();//如果有权限,就正常的生成与输出<a>标签
    	}
    	else{
    		return EVAL_PAGE;//如果没有权限,就不显示当前<a>标签,只是继续执行页面后面的代码
    		
    	}
    }

 

public List<String> getAllPrivilegeUrls() {
		return getSession().createQuery(
				"SELECT DISTINCT p.url FROM Privilege p WHERE p.url IS NOT NULL")
				.list();
	}

 

分享到:
评论

相关推荐

    逻辑表达式解析器-权限标签

    标签内的内容只会在满足表达式的条件下显示或执行,为权限控制提供了动态和灵活的方式。 3. **解析器**:逻辑表达式解析器是程序的一部分,它的任务是将字符串形式的逻辑表达式转换成可执行的形式,例如抽象语法树...

    jsp权限标签的使用(带数据库测试)

    这些标签可以根据用户的角色、权限或者特定条件来决定是否显示或执行某部分页面内容。 1. **自定义标签库**:在JSP中使用权限标签前,我们需要引入相应的标签库,这通常涉及到添加TLD(Tag Library Descriptor)...

    java后台权限管理

    在权限管理中,前端通常会显示权限相关的按钮、链接或菜单,并根据用户的权限动态隐藏或显示。 在实际项目中,权限管理还包括角色(Role)的概念,角色是一组预定义的权限集合。用户被分配角色,而不是直接分配权限...

    tp5权限控制.rar

    在标签"tp5权限控制"中,我们可以推测这个项目主要关注的是如何在tp5环境中实现权限控制机制。这可能包括以下知识点: 1. **Auth类库**:tp5的Auth类库提供了基础的认证和授权功能,包括用户登录、权限验证、角色...

    HETF-LigerUI界面权限控制开发.doc

    在权限控制中,可以利用Freemarker标签根据用户权限动态渲染界面组件,如显示或隐藏某些元素。 - **使用Ajax**:通过Ajax异步请求,可以实现动态更新界面组件的权限状态,无需刷新整个页面。这种方式提高了用户体验...

    [Android][App不显示在最近使用过的应用程序列表中]

    这个属性是定义在AndroidManifest.xml中Activity标签下的,它的值默认为`false`。如果将其设置为`true`,那么这个Activity将不会出现在最近应用列表中。例如: ```xml android:name=".YourActivity" android:...

    freemarker的shiro标签

    通过以上介绍,我们可以看出FreeMarker的Shiro标签为Web应用提供了强大的动态权限控制能力,使得开发者能够在模板层面轻松管理用户界面的可见性和行为,从而提升应用的安全性和用户体验。在开发过程中,熟练掌握和...

    JSP 权限管理系统

    JSP提供了一系列预定义的标签库,如JSTL(JavaServer Pages Standard Tag Library),可以帮助开发者更方便地处理权限控制,例如`&lt;c:if&gt;`和`&lt;sec:authorize&gt;`标签用于根据用户权限显示或隐藏内容。 6. **Servlet和...

    vue iview实现动态路由和权限验证功能

    Vue iView 实现动态路由和权限验证功能是一个关键的实践,尤其在开发企业级Web应用时,确保用户只能访问他们被授权的页面。本篇主要介绍如何在Vue框架结合iView UI库的情况下,构建这样的系统。 首先,动态路由分为...

    权限方法1

    Laravel的Blade模板引擎提供了方便的`@can`和`@cannot`指令,可以直接在视图中进行权限检查,决定是否显示某些内容或按钮。 理解并熟练运用这些知识点,可以帮助开发者构建安全、可控的多用户系统,确保只有经过...

    SHOPNCO2O圈子头像不显示问题

    在网页源代码中,`&lt;img&gt;` 标签用于展示图片,`src` 属性定义了图片的来源。在这个特定情况下,代码`($_SESSION['avatar']);?&gt;`用于动态获取并显示用户的头像。如果这个函数或会话变量没有正确地返回或设置,头像就...

    SAP Portal(EP)的菜单和权限配置及操作手册

    通过RSECADMIN,管理员可以监控并解决用户在执行过程中遇到的权限问题,查看错误日志。 在SAP BW中,信息对象(InfoObjects)是数据存储的基本单位。在RSECADMIN中,可以为这些信息对象设定权限,指定字符对应BW中...

    笔记本电脑大写键CAPSLOCK状态显示软件

    描述中提到,这个软件的开发者是个个人程序员,他声称显示效果良好,这可能意味着软件在视觉反馈上做了优化,能够在用户按下CAPSLOCK键时即时显示提示,避免在输入时因为不知道大写状态而产生错误。同时,开发者邀请...

    基于SpringBoot的权限管理系统

    - 配置Thymeleaf的安全标签库,如`th:if`、`th:unless`,根据用户权限动态显示或隐藏页面元素。 - 使用`@Secured`或`@PreAuthorize`注解控制页面访问权限。 **7. RESTful API安全** - 对RESTful API进行权限控制,...

    Struts1.2的登录、权限

    在本文中,我们将深入探讨Struts1.2的登录功能以及权限管理的基本概念,通过提供的两个示例来帮助理解其核心原理。 1. **Struts1.2登录功能**: - **Action类**:在Struts1.2中,Action类是处理用户请求的核心组件...

    asp.net权限管理系统Demo源码.zip

    通过在Web.config文件中配置 `&lt;authorization&gt;` 标签,可以定义哪些用户或角色可以访问哪个页面或目录。 3. **角色(Roles)**:角色是一种将多个用户分组的方式,便于进行批量授权。例如,可以创建“管理员”、...

    客户按钮权限

    2. **权限配置错误**:确保菜单ID在前后端保持一致,并且权限关联表中的数据准确无误。 3. **用户角色变更后权限未更新**:需要在角色变更后及时同步权限信息,可以考虑在前端增加手动刷新机制,或者优化后端逻辑...

    jsp 权限过滤器的应用

    5. **拦截与重定向**:如果用户没有足够的权限,过滤器可能会拦截请求,并重定向到登录页面或者显示一个错误消息。 6. **实例分析**:为了便于理解,文章可能提供了一个具体的案例,如“SmileOa”项目,展示如何在...

Global site tag (gtag.js) - Google Analytics