我正在尝试使用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);
我想将登录用户设置为问题作者。
有谁知道怎么做?
感谢。
答案 0 :(得分:3)
Redmine不允许设置问题的作者字段。在创建问题时始终将其设置为当前用户。
最简单的解决方案是使用作者的凭据来创建API问题(即用户名/密码或API密钥)。
如果无法做到这一点,您可以使用Redmine的User impersonation功能。这允许您使用管理员的API令牌来处理所有请求。通过在X-Redmine-Switch-User
请求中将POST
标头设置为其他用户的登录信息,您可以将该问题创建为其他用户。
虽然我没有您的.NET客户端库的经验,但似乎他们支持此功能,因为它在自述文件中提到。您似乎可以使用RedmineManager class
的{{3}}设置登录信息。
答案 1 :(得分:1)
感谢@Holger Just的回答,我明白了。
我必须将作者用户constexpr
设置为Login
之前添加新问题。
RedmineManager.ImpersonateUser
这很有效且作者已正确更改为模拟用户。
在此之后,我必须将var user = manager.GetUsers(UserStatus.STATUS_ACTIVE, loginUserName).FirstOrDefault();
manager.ImpersonateUser = user.Login;
manager.CreateObject<Issue>(newIssue);
设置为null
以重置它。