这两天在做一个小型管理系统的权限系统,最初考虑了spring security,发现很多地方都不清楚具体实现细节,看文档明显来不及,因为需要两天之内做好。刚好最近看到java eye上面有篇文章,说到可以用类似linux的权限管理的思路,利用二进制每位的0,1分别代表有无权限,按位与得到结果,具体思路看博文:
http://www.dukai168.cn/blog/63.html
具体实现步骤:
(1)数据字典(不是系统运行必须的,但如果没有这个字典,没人看的懂,下次自己要修改的时候也没办法改了)
//访问对象a权限字典
删除 0
修改 1
添加 2
查看 3
//访问对象b的权限字典
删除 4
修改 5
添加 6
查看 7
//访问对象c的权限字典
删除 8
修改 9
添加 10
查看 11
//访问对象d的权限字典
删除 12
修改 13
添加 14
查看 15
(2)权限配置文件(放到system.properties,使用一个单例模式的propertyConfig类读取该属性)
system.properties
...
#user rights(2^3+2^7+2^5=32768),3查看a;7查看未审核b;5修改未审核b;就是10101000
check={"privilege":"168","needcheck":"1","checkflg":"1"}
#2^3+2^11+2^15
test={"privilege":"34824","needcheck":"1","checkflg":"0"}
...
2^3为2的3次方
check是用户名,168是权限,1是需要做权限验证
(3)自定义标签,jsp中打标签的地方,调用验证
a.定义文件privilege.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>privilege</shortname>
<uri>www.***.com</uri>
<tag>
<name>enable</name>
<tagclass>com.***.***.util.privilege.PrivilegeTag
</tagclass><!-- 这个类是具体业务处理逻辑 -->
<bodycontent>JSP</bodycontent>
<attribute>
<name>operator</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>privilege</name>
<required>true</required>
</attribute>
</tag>
</taglib>
b.web.xml配置加载
<!-- self defined tags -->
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/privilege</taglib-uri>
<taglib-location>/WEB-INF/privilege.tld</taglib-location>
</taglib>
</jsp-config>
c.页面引入和使用
头部引入标签库
<%@ taglib uri="/WEB-INF/privilege" prefix="privilege"%>
具体标签使用
<privilege:enable operator="${operator}" privilege="7">
<a href="chan_list_item.action?check=1&listType=0&channelId=${channelId }" <c:if test="${listType == 0}"> class="on"</c:if>>编辑推荐</a>
</privilege:enable>
d.标签处理类
package com.**.**.util.privilege;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import com.**.**.util.PropertyConfig;
public class PrivilegeTag extends TagSupport {
private static final long serialVersionUID = -532517444654109642L;
private String operator; //对应Attribute,加上set方法。
private int privilege;
public void setOperator(String operator) {
this.operator = operator;
}
public void setPrivilege(int privilege){
this.privilege = privilege;
}
public int doStartTag() throws JspException {
JSONObject property = getProperty(operator);
if (property != null && Integer.parseInt((String)property.get("checkflg"))== 1) {
if(checkRights(Integer.parseInt((String)property.get("privilege")),privilege))
return EVAL_PAGE;
else
return SKIP_BODY;//跳过body,body部分不会显示
}
return EVAL_PAGE;
}
//解析权限
//userPurview是用户具有的总权限
//optPurview是一个操作要求的权限为一个整数(没有经过权的!)
public static boolean checkRights(int userPurview, int optPurview) {
int purviewValue = (int) Math.pow(2, optPurview);
return (userPurview & purviewValue) == purviewValue;
}
public JSONObject getProperty(String user){
String privilegestr = PropertyConfig.getInstance().getString(user, null);
JSONObject JSONObject = null;
if(privilegestr!=null && !"".equals(privilegestr))
JSONObject = (JSONObject) JSONValue.parse(privilegestr);
return JSONObject;
}
}
还有很多需要改进的地方,这个是初版,仅仅是验证了可以实现最基本的功能
分享到:
相关推荐
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、单点登录、OAuth2.0。Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth...
Spring Boot 和 Apache Shiro 的整合是企业级应用中常见的权限认证和安全管理方案。Spring Boot 提供了简化 Java 应用程序开发的框架,而 Shiro 是一个轻量级的安全框架,专注于身份验证、授权、会话管理和加密。...
springboot自定义注解的demo;通过本案例实现了通过自定义注解的拦截的方法可以设置访问权限;通过拦截器获取指定方法上的自定义的注解,然后判断当前的接口需...demo里面的代码简单;文档齐全,初学者秒懂.本文一篇文章搞定
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、单点登录、OAuth2.0。分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token ...
在这个"javaswing简单权限实现"的示例中,我们将探讨如何在Swing应用中构建一个基础的权限控制系统。 首先,权限系统的核心是角色(Role)和权限(Permission)。在Java中,我们可以创建自定义类来表示角色和权限,...
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证
本文将基于给定的标题“简单的权限实现”和描述,深入探讨如何在Java环境中实现一个基本的权限管理系统,以便根据用户的不同权限展示不同的页面信息。 首先,我们需要理解权限的概念。在软件系统中,权限通常指的是...
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证
在IT行业中,权限管理系统是构建复杂应用程序不可或缺的一部分,...在实际开发中,可以根据项目需求进行扩展,如引入更复杂的权限模型(如RBAC,基于角色的访问控制)或者集成第三方认证服务,以适应更多的应用场景。
"简单的权限控制系统"这个主题主要探讨了如何设计和实施一个基础的权限控制方案,它涉及到用户、角色和权限这三者之间的相互作用。在这个系统中,用户是操作的主体,角色是权限的集合,而权限则定义了用户可以进行的...
Sa-Token 旨在以简单、优雅的方式完成系统的权限认证部分,以登录认证为例,你只需要: // 会话登录,参数填登录人的账号id StpUtil.login(10001); 无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码...
**lighttpd的权限认证模块 mod_auth** 在Web服务器领域,lighttpd以其轻量级、高效能的特点受到许多开发者和管理员的青睐。它提供了一系列模块来扩展其功能,其中`mod_auth`就是用于实现HTTP基本认证和摘要认证的...
《简单实用权限管理系统详解》 在信息技术领域,权限管理系统的应用是至关重要的,它涉及到用户访问控制、数据安全以及组织内部资源的有效分配。本篇文章将深入探讨“简单实用权限管理系统”的核心概念、功能以及...
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、单点登录、OAuth2.0 Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证...
总的来说,这个压缩包提供了一套完整的ONVIF 1.02实现,包括C/C++源代码、WS-Security认证的实现以及相关文档,开发者可以通过这些资源实现对ONVIF设备的安全控制和管理。使用时,需理解SOAP协议,熟悉WS-Security的...
本文将深入探讨基于Java实现的简单权限管理系统,该系统利用了Struts、Hibernate和Spring这三大流行框架的整合来实现其功能。 首先,我们来了解权限管理的核心概念。权限管理主要是对用户或角色进行授权,控制他们...
本教程将探讨如何使用Spring Boot结合Spring Security、OAuth2和JWT(JSON Web Token)来搭建一个认证服务器、API网关以及微服务之间的权限认证和授权机制。 首先,Spring Security是Spring框架的一个模块,专门...
在权限管理中,Spring的Security模块可以用来实现用户认证和授权,控制哪些用户可以访问哪些资源。 4. **Struts**: Struts是基于MVC(Model-View-Controller)设计模式的Web应用框架,负责处理HTTP请求,调用业务...
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!—— 登录认证、权限认证、分布式Session会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证。