小编Cha*_* M.的帖子

如何使用asp.net Identity 2.0授权用户只能查看自己的记录

对于这样一个普遍的问题一定有一个简单的解决方案,所以我为我的无知提前道歉:

我有一个多用户 Web 应用程序(带有 EF6 的 Asp.net MVC5),允许用户查看和/或修改存储在多个相关表(Company、Csearch、Candidate)中的相关数据。(更多详情请参见下文)。他们不应该看到任何其他数据(例如通过篡改 URL)。

我使用 Asp.net Identity 2.0 进行身份验证,并且也想将其用于上述授权。用户数据存储在标准的 AspNetUser 表中。我仅对身份表和业务表使用一种上下文。

我想我必须使用角色或声明来解决这个问题,但我找不到任何关于如何做到这一点的指导。有人能指出我正确的方向吗?

我目前已经通过向 CompanyController 添加 LINQ 条件来解决它(对于公司模型),但这似乎不是解决问题的非常安全和正确的方法。

public ActionResult Index(int? id, int? csearchid)
        {
            var companies = db.Companies
              .OrderBy(i => i.CompanyName)
              .Where(t => t.UserName == User.Identity.Name);
        return View(companies);
Run Code Online (Sandbox Code Playgroud)

我的数据模型很简单,我使用 Visual Studio 2017 搭建了它的脚手架,首先通过 EF6 代码,我构建了一个关系数据模型,大致如下:

一个公司可以有多个搜索(一对多)。每个搜索可以有多个候选者(一对多)。一个公司可以有多个登录用户。用户保存在 ASP.Net Identity 生成的 AspNetUsers 表中。

我的公司模型如下:

public class Company
{
    public int CompanyID { get; set; }

    // Link naar de Userid in Identity: AspNetUsers.Id
    [Display(Name = "Username")]
    public …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net-mvc asp.net-identity

3
推荐指数
1
解决办法
7888
查看次数

使用 Microsoft Graph 将 C# Asp.Net Core 中的文件上传到 Sharepoint/OneDrive,无需用户交互

当我尝试使用 Microsoft Graph API 通过守护程序应用将文件上传到 OneDrive 时,收到错误 400 错误请求。我使用 HttpClient,而不是 GraphServiceClient,因为后者假定交互并与 DeleatedAuthenticationProvider(?) 一起使用。

  • 该应用程序已在AAD中注册并具有正确的应用程序权限(Microsoft Graph / File ReadWrite.All)
  • 注册适用于一个租户,没有重定向网址(按照说明)

main MethodUpload通过 Helper 获取 AccessTokenAuthenticationConfig并使用 Helper 将文件放入 OneDrive/SharePoint ProtectedApiCallHelper

[HttpPost]
    public async Task<IActionResult> Upload(IFormFile file)
    {            
        var toegang = new AuthenticationConfig();
        var token = toegang.GetAccessTokenAsync().GetAwaiter().GetResult();

        var httpClient = new HttpClient();
        string bestandsnaam = file.FileName;
        var serviceEndPoint = "https://graph.microsoft.com/v1.0/drive/items/{Id_Of_Specific_Folder}/";            

        var wurl = serviceEndPoint + bestandsnaam + "/content";
// The variable wurl looks as follows: "https://graph.microsoft.com/v1.0/drive/items/{Id_Of_Specific_Folder}/proefdocument.txt/content"
        var apicaller …
Run Code Online (Sandbox Code Playgroud)

c# sharepoint onedrive asp.net-core microsoft-graph-api

3
推荐指数
1
解决办法
1万
查看次数

C# List.Add 覆盖以前的对象

我正在尝试创建一个简单的对象列表,但不知何故,在每个 foreach 循环中,以前的记录都会被新的循环覆盖,以前的记录会被新记录覆盖。因此,如果 realData 中有 6 个条目,则列表将包含最后一条记录的 6 倍。

我是否以某种方式重新创建列表而不是添加到列表中?我是否还忽略了另一种创建列表的替代方法?

我的代码是

    public async Task<IActionResult> OrderOverview()
    {
        var itemList = new List<OrderItemVM>();
        var realData = await _context.OrderItem.ToListAsync();
        var orderItemVM = new OrderItemVM();

        foreach (var item in realData)
        {
            orderItemVM.Id = item.Id;                
            orderItemVM.OrderId = item.OrderId;
            orderItemVM.OrderName = _context.Order.Find(item.OrderId).OrderName;                
            orderItemVM.ItemName = item.ItemName;

            itemList.Add(orderItemVM);
        }

        return View(itemList);
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core

1
推荐指数
1
解决办法
1077
查看次数