RBAC角色权限设计思路
1 设计思路
1) 具有创建用户、修改用户和删除用户的功能: Administrator
2) 具有创建角色和删除角色的功能: Administrator
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
|
UserID |
路线编号 |
varchar(20) |
PK |
|
UserName |
用户名称 |
varchar(20) |
|
|
UserPwd |
用户密码 |
varchar(20) |
|
|
LastSignTime |
最后登陆时间 |
datatime |
|
|
SignState |
用户登陆状态标记 |
int |
|
|
TickeID |
验证票记录编号 |
varchar(128) |
|
|
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
|
RoleID |
角色编号 |
varchar(20) |
PK |
|
RoleName |
角色名称 |
varchar(20) |
|
|
RoleNote |
角色信息描述 |
varchar(20) |
|
|
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
|
UserRoleID |
用户角色编号 |
varchar(20) |
PK |
|
UserID |
用户编号 |
varchar(20) |
FK |
|
RoleID |
角色编号 |
varchar(20) |
FK |
|
UserRoleNote |
用户角色信息描述 |
varchar(20) |
|
|
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
|
PermissionID |
编号 |
varchar(20) |
PK |
|
PermissionName |
权限名称 |
varchar(20) |
|
|
PermissionNote |
全息信息描述 |
varchar(20) |
|
|
|
|
|
|
|
Static_User字段名 |
详细解释 |
类型 |
备注 |
|
RolePermissionID |
角色权限编号 |
varchar(20) |
PK |
|
RoleID |
角色编号 |
varchar(20) |
FK |
|
PermissionID |
权限编号 |
varchar(20) |
FK |
|
RolePermissionNote |
角色权限信息描述 |
varchar(20) |
|
|
|
|
|
|
using System.Web.Services;
using System.Web.Services.Protocols;
// AuthHeader class extends from SoapHeader
public class AuthHeader : SoapHeader {
public string Username;
public string Password;
}
public class HeaderService : WebService {
public AuthHeader sHeader;
...
[WebMethod(Description="This method requires a custom soap header set by the caller")]
[SoapHeader("sHeader")]
public string SecureMethod() {
if (sHeader == null)
return "ERROR: Please supply credentials";
else
return "USER: " + sHeader.Username;
}
HeaderService h = new HeaderService();
AuthHeader myHeader = new AuthHeader();
myHeader.Username = "username";
myHeader.Password = "password";
h.AuthHeader = myHeader;
String result = h.SecureMethod();
public class ClientClass {
public static void Main() {
GenericIdentity ident = new GenericIdentity("Bob");
GenericPrincipal prpal = new GenericPrincipal(ident,
Newstring[] {"Level1"});
LogicalCallContextData data =
new LogicalCallContextData(prpal);
//Enter data into the CallContext
CallContext.SetData("test data", data);
Console.WriteLine(data.numOfAccesses);
ChannelServices.RegisterChannel(new TcpChannel());
RemotingConfiguration.RegisterActivatedClientType(
typeof(HelloServiceClass), "tcp://localhost:8082");
HelloServiceClass service = new HelloServiceClass();
if(service == null) {
Console.WriteLine("Could not locate server.");
return;
}
// call remote method
Console.WriteLine();
Console.WriteLine("Calling remote object");
Console.WriteLine(service.HelloMethod("Caveman"));
Console.WriteLine(service.HelloMethod("Spaceman"));
Console.WriteLine(service.HelloMethod("Bob"));
Console.WriteLine("Finished remote object call");
Console.WriteLine();
//Extract the returned data from the call context
LogicalCallContextData returnedData =
(LogicalCallContextData)CallContext.GetData("test data");
Console.WriteLine(data.numOfAccesses);
Console.WriteLine(returnedData.numOfAccesses);
}
}
using System;
using System.Text;
using System.Runtime.Remoting.Messaging;
using System.Security.Principal;
public class HelloServiceClass : MarshalByRefObject {
static int n_instances;
int instanceNum;
public HelloServiceClass() {
n_instances++;
instanceNum = n_instances;
Console.WriteLine(this.GetType().Name + " has been created.
Instance # = {0}", instanceNum);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of
HelloServiceClass.", instanceNum);
}
public String HelloMethod(String name) {
//Extract the call context data
LogicalCallContextData data =
(LogicalCallContextData)CallContext.GetData("test data");
IPrincipal myPrincipal = data.Principal;
//Check the user identity
if(myPrincipal.Identity.Name == "Bob") {
Console.WriteLine("\nHello {0}, you are identified!",
myPrincipal.Identity.Name);
Console.WriteLine(data.numOfAccesses);
}
else {
Console.WriteLine("Go away! You are not identified!");
return String.Empty;
}
// calculate and return result to client
return "Hi there " + name + ".";
}
}
1)class UserInfoMng() 用户信息管理类,其中包括方法:
l CreateUserInfo(string UserName string UserPwd) 建立用户信息,调用存储过程CreateUserInfo(@UserName,@UserPwd)
l ModifyUserInfo(string UserName string UserPwd) 修改用户信息,调用存储过程ModifyUserInfo(@UserName,@UserPwd)
l DeleteUserInfo() 删除用户信息,调用存储过程DeleteUserInfo
(@UserID)
2)class UserAuthentication() 用户认证类,用来实现用户角色、权限的设置,包括方法:
l CreatePermissionInfo(string PermissionName string Permissi-
-onNote) 建立权限信息,调用存储过程CreatePermissionInfo
(@PermissionName,@PermissionNote)
l CreateRoleInfo(string RoleName string RoleNote) 建立角色信息,调用存储过程CreateRoleInfo(@RoleName,@RoleNote)
l DeleteRoleInfo() 删除角色信息,调用存储过程DeleteRoleInfo
(@RoleID)
l GrantUserRole(string UserID string RoleID string UserRoleNote) 授予用户角色,调用存储过程GrantUserRole(@UserID,@RoleID,
@UserRoleNote)
l DeleteUserRole() 删除用户角色,调用存储过程DeleteUserRole
(@UserRoleID)
l GrantRolePermission(string RoleID string PermissionID string RolePermissionNote) 授予角色权限,调用存储过程GrantRolePermission(@RoleID,@PermissionID,@RolePermissionNote)
l DeleteRolePermission() 删除授予的角色权限,调用存储过程
DeleteRolePermission(@RolePermissionID)
1)权限设置
class PermissionInfoMng() 用户权限信息管理类,包括方法:
l CreatePermissionInfo() 建立权限信息
2)用户管理
class UserInfoMng() 用户信息管理类,包括方法:
l CreateUserInfo() 建立用户信息
l ModifyUserInfo() 修改用户信息
l DeleteUserInfo() 删除用户信息
3)用户授权管理
class RoleInfoMng() 角色信息管理类,包括方法:
l CreateRoleInfo() 建立角色信息
l DeleteRoleInfo() 删除角色信息
class UserRoleMng() 用户角色管理类,包括方法:
l GrantUserRole() 授予用户角色
l DeleteUserRole() 删除用户角色
class RolePermissionMng() 角色权限管理类,包括方法
l GrantRolePermission() 授予角色权限
l DeleteRolePermission() 删除角色权限
4)用户认证管理
class Authentication() 用户认证类,包括方法:
l Login(string UserName string UserPwd) 用户登陆认证,用户认证通过分配给用户一个TicketID,否则TicketID则为null
l Logout() 用户正常退出
RBAC角色权限设计思路的更多相关文章
- 百万年薪python之路 -- RBAC角色权限设计
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限.这样,就构造成"用 ...
- RBAC角色权限设计
https://www.cnblogs.com/vinozly/p/4851364.html
- RBAC角色权限控制
RBAC角色权限控制 1. user (用户表) * 用户的基本信息(mid:用户信息id 如图) 2. node (节点表) * 页面(模块\控制器\方法) 3. role_node(角色.节点 ...
- java权限管理与用户角色权限设计
java权限管理与用户角色权限设计 实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器 ...
- 基于RBAC的权限设计模型
个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC).角色分级模型RBAC1(Hierarchal RBAC).角色限制模型RBAC2(Constraint RBAC)和统一模 ...
- java用户角色权限设计
实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...
- 数据权限设计——基于EntityFramework的数据权限设计方案:一种设计思路
前言:“我们有一个订单列表,希望能够根据当前登陆的不同用户看到不同类型的订单数据”.“我们希望不同的用户能看到不同时间段的扫描报表数据”.“我们系统需要不同用户查看不同的生产报表列”.诸如此类,最近经 ...
- RBAC 权限设计(转载)
来源 :https://blog.csdn.net/rocher88/article/details/43190743 这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百 ...
- 【权限设计】一个案例,三个角色,简单说下B端产品的权限设计
入行以来也接触过一些B端产品,这些产品之中权限管理是重中之重,权限管理不仅仅是整个系统的一个小小的模块,它一直贯穿整个系统,从登陆到操作到最后的登出.说它相当的复杂真不为过. 对于权限,如果从控制力来 ...
随机推荐
- 软硬大比拼 硅胶、TPU和PC材质对比
手机保护壳的材质有很多种,目前保护壳市场上最为常见的就是硅胶.TPU.PC材质了.那么我们不禁要问,PU.硅胶.PC三材质到底有哪些区别呢?普通消费者在购买保护壳的时候能否从外表就能看出保护壳材质?P ...
- Keil C51里面lib文件生成和调用方法
一.包含关系 LCD1602.C里面包含LCD1602.H LCD1602.H的文件格式 二.设置生成lib文件 三.Lib文件调用 添加lib文件对话框 添加后的lib文件 呵呵^_^,这样就可以删 ...
- 利用Keil u4调试,精确实现软件延时
用定时器延时,有时候显得有点麻烦,我们不如考虑软件精确延时,软件延时无非就是利用for或while多重循环.以前用到延时函数时,都是从网上下载别人写好的延时子程序.延时5ms,400ms,1s,……, ...
- 理解和使用NT驱动程序的执行上下文
理解Windows NT驱动程序最重要的概念之一就是驱动程序运行时所处的“执行上下文”.理解并小心地应用这个概念可以帮助你构建更快.更高效的驱动程序. NT标准内核模式驱动程序编程的一个重要观念是某个 ...
- jqGrid中多选
原文地址;http://www.cnblogs.com/josechuanmin/archive/2013/05/19/3087138.html 在jqGrid中设置multiselect: true ...
- Unity中OnGUI绘制贪吃蛇
Square.cs : public class Square : MonoBehaviour { public int row, col; public Rect rect; public Text ...
- 设计模式学习--复合模式(Compound Pattern)
设计模式学习--复合模式(Compound Pattern) 概述 ——————————————————————————————————————————————————— 2013年8月4日<H ...
- 利用Jenkins自动部署工具间接构建kettle的调度平台
关于Jenkins的介绍我就不说了,自己百度,因为这个工具调用脚本只是他的功能的冰山一角,其他功能我也不能理解,因为不是那个领域. 下面我就介绍一下为什么我们需要一个调度平台,以及学习完 ...
- HTTP meta 设置方法
网页的缓存是由 HTTP 消息头中的 “Cache-control” 来控制的,常见的取值有 private.no-cache.max-age.must-revalidate 等,默认为private ...
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
在IOS系统里,我们打开app都是有启动动画的,这样子在打开一个新窗体,用户感觉有个过渡动画,体验效果很好,不会觉得很突然就冒出一个窗体,下面就实现一个android 的activity启动和关闭动画 ...