【问题标题】:Implementing Security in ASP.NET Web App as afterthought事后才在 ASP.NET Web App 中实现安全性
【发布时间】:2012-06-04 11:10:09
【问题描述】:

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

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

申请详情

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

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

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

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

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

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

【问题讨论】:

    标签: asp.net sql-server-2008 security sql-server-ce


    【解决方案1】:

    您可以使用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;
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2011-04-12
      • 2017-08-11
      • 2019-04-26
      • 1970-01-01
      • 2016-11-12
      相关资源
      最近更新 更多