【问题标题】:Setting new issue's author through Redmine .NET API通过 Redmine .NET API 设置新问题的作者
【发布时间】:2016-02-08 22:58:57
【问题描述】:

我正在尝试使用 Redmine .NET API 从 ASP.NET MVC 应用程序管理 Redmine。

MVC 应用程序需要允许用户从其 UI 创建和编辑Issue。 (MVC 应用程序与 Redmine 拥有相同的用户。)以下代码添加了一个新问题,但作者始终设置为 API 密钥的所有者。

using Redmine.Net.Api;
using Redmine.Net.Api.Types;

RedmineManager manager = new RedmineManager(host, apiKey);

Issue newIssue = new Issue();
// Set issue details
newIssue.Author = new IdentifiableName();
var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault();
newIssue.Author.Id = user.Id;

manager.CreateObject<Issue>(newIssue);

我想将登录用户设置为问题作者。
有谁知道如何做到这一点?
谢谢。

【问题讨论】:

    标签: c# redmine redmine-api


    【解决方案1】:

    Redmine 不允许设置问题的作者字段。在创建问题时,它始终设置为当前用户。

    最简单的解决方案是使用作者的凭据来创建 API 问题(即他们的用户名/密码或他们的 API 密钥)。

    如果无法做到这一点,您可以使用 Redmine 的 User impersonation 功能。这允许您对所有请求使用管理员的 API 令牌。通过在您的POST 请求中将X-Redmine-Switch-User 标头设置为其他用户的登录名,您可以以其他用户的身份创建问题。

    虽然我对您的 .NET 客户端库没有经验,但他们似乎支持此功能,正如其 README 中提到的那样。看来您可以使用RedmineManager classImpersonateUser property 设置登录。

    【讨论】:

      【解决方案2】:

      感谢@Holger Just 的回答,我想通了。

      我必须将作者用户的Login 设置为RedmineManager.ImpersonateUser BEFORE添加新问题。

      var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault();
      manager.ImpersonateUser = user.Login;
      
      manager.CreateObject<Issue>(newIssue);
      

      这很好,作者已正确更改为模拟用户。

      在此之后,我必须将null 设置为RedmineManager.ImpersonateUser 以重置它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多