权限控制的方案很多,有复杂的有简单的。不是说越复杂的越是好的,还是要看实际的情况。
下面要介绍的权限方案比较适合管理消息(文章、新闻、邮件、公告)权限控制,但整体的设计思路适合N多地方。
方案
@假设有4中操作等级
操作等级 |
操作 |
加权值 |
1 |
查看 |
1 |
2 |
添加、修改 |
2 |
3 |
删除 |
4 |
4 |
发布 |
8 |
即4位二进制来表示
例如: 0001 查看 、1000 发布
@角色
根据上面的表可以得到16中角色,权值在0-15之间
例如:如果某个角色的权值为13,那些可以算出他所有的权限为:查看+删除+发布(1+4+8),可以看到这个角色就是我们所说“一般的管理员”
@实际中的角色设计
上面的16种角色并不都是“有用的”。我们要用的可能是下面的一些角色
角色 |
权值 |
权限 |
说明 |
游客 |
0 |
无 |
某些情况可能必须要登陆的-例如公司OA |
登陆用户 |
1 |
查看 |
|
作者本人 |
7 |
查看+添加、修改+删除 |
|
一般管理员 |
13 |
查看+删除+发布 |
无添加、修改权 |
超级管理员 |
15 |
所有权 |
|
@设计数据库表
1.模块角色等级表
模块角色等级Id---角色名称--权值
2.用户表
用户Id----角色Id
3.角色权限表
角色Id----模块Id---模块角色等级id
@下面以Struts中使用上面的权限管理方案为例,来说明其有效性。
1.创建角色并分配权限
按照上面的设计,分配权限的工资就不应该是指定是否有查看、添加、修改、删除权限了,而是指定他的模块角色等级。例如为该角色指定为一般管理员,这样改角色就有了查看权,删除权,发表权。
2.用户角色修改
按照上面的设计,用户只能有一个角色。这里的角色就像是一个用户组一样,并将该用户组成员的权限都一样。
所有角色修改也是相当简单的
3.权限控制
采用Sruts的Interceptor进行权限控制。
--1、获取用户角色Id、模块Id,从数据库中相应的模块角色等级
--2、获取该请求的操作等级
--3、判断是否有权
例如:
某用户向服务器发送删除某篇文章的请求,Interceptor中获取用户角色、请求的actionName 从数据查库找到该用户日志模块的操作等级为4,即他是一个一般管理员;而按照上面的设计,一般管理员有删除文章的权限。所以Interceptor将对该请求“放行”.
---------------------
上面的权限设计只是提供一种设计的思路!不必拘泥于我给出的设计方案。
也许你想设定一个新的模块角色,比如:我想设定这样一个角色,他只有查看和修改这两种权限--哦他可能的职能是一个编辑,检查有没错别字、排一下版面....
这样你也许可以想到,角色的创建完全可以细颗粒到指定操作,然后根据选择算出权值。然后给角色命名---啊哈一个新的角色诞生了
甚至你想这样:我需要更多的操作,比如:推荐到主页(这样将产生另一个操作:审核是否应该放到主页)。
一句话视情况而定!
------------------------
写的很乱,请原谅!有错的地方,或者有其他的建议,请指教!
分享到:
相关推荐
在IT行业中,权限控制是后台管理系统中的核心组成部分,它确保用户只能访问他们被授权的资源。本项目结合了layui前端框架和thinkphp后端框架,实现了最细粒度的权限控制,通过读取代码注释的方式来决定用户权限,这...
在IT行业中,权限控制是确保系统安全性和数据保护的关键机制,尤其在Web应用程序中,JavaScript作为客户端脚本语言,其在权限控制中的角色至关重要。本文将深入探讨JavaScript如何实现权限控制,以及它在这个过程中...
在IT行业中,权限控制是确保系统安全性和用户体验的关键部分,特别是在企业级应用中。SpringBoot作为Java领域广泛使用的微服务框架,提供了丰富的功能来帮助开发者实现权限管理。本篇文章将详细探讨如何在SpringBoot...
在C# WinForm应用开发中,权限控制是一个关键的安全组件,它确保了只有授权的用户才能访问特定的功能或数据。本教程将详细讲解如何在C# WinForm环境中实现基于角色的权限控制,包括角色、用户和权限的设置。 首先,...
Java权限控制插件是软件开发中的一个重要组成部分,它主要用于管理和限制不同用户或角色对系统资源的访问。在本文中,我们将深入探讨这个基于Java编写的权限控制插件,特别是其核心概念、设计模式以及实现机制。 ...
在ASP.NET Core中,权限控制是一个关键的组件,用于确保只有具备特定权限的用户才能访问特定的资源或执行特定的操作。在本教程中,我们将探讨如何在ASP.NET Core MVC项目中实现这一功能,特别是如何进行权限的分配。...
Spring Security如何使用URL地址进行权限控制 Spring Security是一个功能强大且广泛应用的Java安全框架,它提供了许多功能,包括身份验证、授权、加密等。其中,权限控制是Spring Security的一个重要组件,它允许...
演示了包括:权限控制、超大附件文件上传、EasyUI基本组件使用等等功能,具体请自行看本示例演示功能 SSHE框架环境需求:JAVA环境:JDK7+;数据库环境:oracle10g+/sqlserver2000+/mysql5+;WEB容器环境:jetty6+/...
【权限控制模型】是信息化系统中至关重要的组成部分,它的设计直接影响到系统的安全性、稳定性和易用性。本文将深入探讨几种常见的访问控制技术,包括自主访问控制(DAC)、强制访问控制(MAC)以及基于角色的访问...
在这个“springboot springsecurity动态权限控制”的主题中,我们将深入探讨如何在Spring Boot项目中集成Spring Security,实现动态权限控制,让菜单权限的管理更加灵活和高效。 首先,我们需要理解Spring Security...
这是一款基于Winform权限控制系统源码,基本上实现了权限管理系统的功能,对于新手来说,还是比较有学习价值的,值得推荐一下,感兴趣的朋友可以下载学习一下。 二、功能介绍 1、用户管理 2、组管理 3、用户授权 ...
### 前后端分离下的权限控制设计 随着前端框架如React、Angular和Vue的兴起,前后端分离架构成为主流趋势。然而,这种架构模式带来了新的挑战,尤其是关于权限控制的问题。本文旨在探讨如何在前后端分离的架构下...
在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...
### Web业务系统权限控制知识点详解 #### 一、概述 在现代Web应用开发中,权限控制是一项非常重要的功能。良好的权限控制系统能够确保只有授权的用户才能访问特定的资源和服务,从而提高了系统的安全性与稳定性。本...
在ASP中实现权限控制是确保网站安全和数据保护的关键环节。此压缩包文件包含的内容显然与ASP用户权限设置相关,特别是结合了Access数据库进行用户管理。 ASP中的权限控制主要涉及到以下几个方面: 1. **身份验证**...
该发明涉及一种基于Vue.js和Django的权限控制系统,它主要关注的是在互联网应用程序中实现高效且严格的用户权限管理。Vue.js是一种轻量级的前端JavaScript框架,它以其易用性、灵活性和组件化特性而受到开发者的青睐...
"基于Struts2拦截器的权限控制.doc"文档很可能是提供了一个具体的案例,详细讲解了如何创建并使用拦截器进行权限控制。文档可能会涵盖以下内容: 1. 创建自定义拦截器类,实现`Interceptor`接口,重写`intercept()`...
在Java编程语言中,访问权限控制是至关重要的一个部分,它确保了代码的封装性和安全性。本主题将深入探讨Java中的访问修饰符及其在源代码中的应用。 首先,Java提供了四种基本的访问权限控制修饰符: 1. **public*...
项目概述:本源码为基于角色基础访问控制(RBAC)模型的中小型应用开发平台,采用前后端分离架构。...该平台为开发人员提供了一个具有完善权限控制的后台管理系统,支持快速开发具有复杂权限需求的中后台应用。
ASP.NET权限控制是Web开发中一个关键的安全环节,它确保只有授权的用户才能访问特定的资源或执行特定的操作。在本程序中,开发者利用ASP.NET的内置对象和HTTP消息头来实现这一目标。下面我们将详细探讨这个话题。 ...