2

与许多现实世界的应用程序一样,安全性(登录名/密码)只是为了授予/拒绝对整个应用程序的访问权限。现在客户端要求细粒度的安全性,例如某些网页应该只能查看,一些用户可以删除其他不能等。基本上客户端要求以下内容。

有效权限::用户--> 网页--> 访问类型(查看、创建/编辑、删除)

申请详情

  • ASP.NET/C#
  • 用于 Biz 数据的 MSSQL Server 2008
  • 用于用户/密码/配置文件/日志的 SQLCE
  • 用于主 UI 的 Ext.NET

我们讨论过最好增强security.sdf文件并有一个屏幕(网页)表和一个用户+屏幕+一个表示访问类型的数字的连接表,即

  • 1:阅读
  • 2:写
  • 4:删除

这些可以使用按位运算符进行检查。应用程序使用 ASP.NET 模拟来访问 MSSQL2008

问题是如何在 Web 应用程序中实现它?

如果有人有更好的想法,请分享!!!

4

1 回答 1

3

您可以使用该IsInRole功能并将用户分类为角色。每个角色都可以有一些只能执行的操作。因此,通过询问女巫角色是用户,您可以让他做或不思考。

HttpContext.Current.User.IsInRole("Role")

或者你可以反过来做,询问这个角色是否可以使用这个动作,这里是一个简单的对象,有权限和检查。

public enum csPermissions
{
    pActionDelete = 1,   
    pActionEdit = 2 , 
    // more names...
}

private int[] AdminPermission = { 
    (int)csPermissions.pActionEdit, 
    (int)csPermissions.pActionDelete, 
    // more permissions...
};

private int[] BackOfficePermission = { 
    (int)csPermissions.pActionEdit, 
    // more permissions...
}; 

public static bool IsThisAllowed(csPermissions AskPermitForThisAction)
{
    // questions here for all users roles...
    // here is only an example 
    if (HttpContext.Current.User.IsInRole("Administator")))
    {
        for (int i = 0; i < AdminPermission.Length; i++)
            if (AdminPermission[i] == (int)AskPermitForThisAction)
                return true;
    } 

    // no permission found  
    return false;
 }
于 2012-06-04T11:31:36.543 回答