如何在ASP.net Core 2.2中为我的CRUD Web应用程序实现基本安全性?

时间:2019-04-27 12:41:05

标签: c# asp.net-core-mvc entity-framework-core

我遵循了Microsoft撰写的精彩教程,内容涉及如何使用Core 2.2(https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/?view=aspnetcore-2.2)创建MVC Web应用程序。完成本教程后,我可以使用其他产品来构建类似的Web应用程序。为简单起见,我将坚持使用本教程中的“ Movie App”示例来提出我的问题。

下面是创建的基本CRUD应用程序的视图。

Screen shot of CRUD

我想为Web应用程序提供一些基本的安全性。到目前为止,我一直无法找到满足以下需求的解决方案:

  • 简单。只有一个需要任何特权的用户,就是我。这些特权将充分利用CRUD功能(我是唯一可以单击上图中的任何蓝色链接的人)。
  • 没有公开登录要求。我希望访问的任何人都能够从搜索框中进行查询(未显示在图片中)并查看结果。我只是不希望他们能够进行任何更改。
  • 不必花太多时间在安全性上,这样我就可以在更适合新开发人员的领域继续学习。

我发现的大部分选项是企业级别的,目前超出了我的技能水平,或者要求每个人都是用户。如果我是唯一的用户,是否可以轻松创建一个用户帐户,也许还可以创建第二个因素(例如IP锁定)?如果不是这样,我是否有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

好的,您需要实现的一件事是“某种”安全性/登录-这样应用程序就知道“某人”已经登录。在您的情况下,它需要知道“您”已经登录。您必须实现某种基本的身份验证机制,以便知道用户的“身份”。您可以看一下基本的cookie authentication here。您不需要实施任何主要的索赔系统-简单的身份验证就足够了(对于您的非生产/学习场景)。

一旦实现了某种身份验证/登录系统,成功登录(身份验证)后,系统就会知道“用户”已通过身份验证。然后,在Razor代码中,您可以简单地检查这种情况,然后删除未授权人员的链接,并在控制器上可以添加“ Authorize”属性,以便后端代码也可以检查经过身份验证的用户的相关功能。 例如:在Razor代码中,您可以包括指向“编辑/删除”等的条件链接,例如:

@if(User.Identity.IsAuthenticated) 
{
    //Include links for Edit / Delete
}

您可以在相关控制器上包含[Authorize]属性,在相关方法上包含[AllowAnonymous]。

希望这会有所帮助。无法逃避一些基本的理解和工作。