【问题标题】:what security approach should i apply? [closed]我应该应用什么安全方法? [关闭]
【发布时间】:2014-11-13 11:35:03
【问题描述】:

我的团队正在开发一个大型网络应用程序。 根据我们的分析:一些用户应该能够访问页面并使用其控件进行添加、更新、删除和批准等。 其他人应该能够访问这些页面,并且可以执行任何操作(无控制) 和其他人有能力执行一些(不是全部)动作 其他人根本无法访问某些页面。 那么我们应该使用什么方法:成员资格、身份,或使用会话并检查每个页面和页面中每个控件的权限???我们应该做什么 ?? 有人告诉我,我为模块创建表,为每个模块页面创建另一个表,为每个页面操作创建另一个表,并开发一个用于安全检查的类库作为上面的安全层(BLL)是正确的(最佳实践)吗?如果不是那怎么办??

【问题讨论】:

    标签: .net asp.net-mvc security asp.net-identity-2


    【解决方案1】:

    如果您要使用 ASP.NET MVC,我建议您使用 ASP.Net Identity Framework。 另一种可能性是使用旧的 ASP.NET 成员资格,但微软正在努力推动新的 ASP.Net 身份,所以如果我是你,我会使用这个新框架。

    此外,您会注意到 ASP.NET Identity 会自动创建所有需要的授权表(AspNetUsers、AspNetRoles,...)。因此,如果您不想对它们进行更改,您可以忘记所有与授权和身份验证相关的数据库内容。

    This tutorial 是了解如何实现 ASP.NET Identity 的良好开端。

    另一方面,我认为将安全性实现为不同的模块(即使在不同的数据库中)是一个好主意,将授权服务器和资源服务器分开。 This post的同一个博客,会教你一步一步的教程,实现它。

    已编辑

    Asp.net 身份允许您在控制器级别或操作级别授权您的应用程序:

    [Authorize(Roles="Admin")]
    public class AdminController : Controller
    {
     // ...
    }
    
    public class UserController : Controller
    {
     [Authorize(Roles="Admin,User")]
     public ActionResult LinkLogin(string provider)
     {
       // ...
     }
    }
    

    正如您将在上述教程中看到的那样,要管理角色授权,您需要使用三个表:AspnetUsers、AspnetRoles 和关联这两个表的表 AspNetUserRoles。

    因此,您可以灵活地授权某些用户使用您的控制器,同时不允许在其中执行某些操作(添加、更新、删除...)。

    【讨论】:

    • 很好,但 asp.net 身份是否允许我限制某些用户查看页面但无法使用其中的所有控件(CRUD)示例:添加新设备但无法使用编辑或删除???
    • @noorsaif 我已经编辑了我的问题,试图回答您的评论。请检查一下。
    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多