我的目标是根据我将要工作的环境设置用户名字符串,该字符串必须是:
HttpContext.User.Identity.Name生产中。这是因为我必须能够模拟不同类型的用户,并且我通过调用使用此用户名字符串作为参数FindByIdAsync的自定义实现上的方法来实现UserIdentity此目的,如下所示:
public class HomeController : Controller
{
UserManager<AppUser> userManager;
AppUser connectedUser;
public HomeController(UserManager<AppUser> usrMgr, IContextUser ctxUser)
{
connectedUser = usrMgr.FindByNameAsync(ctxUser.ContextUserId).Result;
}
}
Run Code Online (Sandbox Code Playgroud)
appsettings.{environment}.json我开始为三个常用的开发、登台和生产环境创建三个文件;development 和 staging .json 文件都具有以下配置:
...
"Data": {
...
"ConnectedUser" : "__ADMIN"
}
...
Run Code Online (Sandbox Code Playgroud)
而生产环境配置文件中没有这个key。
我创建了一个简单的界面
public interface IContextUser
{
public string ContextUserId { get; }
}
Run Code Online (Sandbox Code Playgroud)
及其实施:
public class ContextUser : IContextUser
{
string contextUser;
IHttpContextAccessor contextAccessor;
public ContextUser(IHttpContextAccessor ctxAccessor, string ctxUser = null)
{ …Run Code Online (Sandbox Code Playgroud)