C# ASP.NET MVC5标识:注册后避免更改登录用户

C# ASP.NET MVC5标识:注册后避免更改登录用户,c#,asp.net,asp.net-mvc-5,asp.net-identity,C#,Asp.net,Asp.net Mvc 5,Asp.net Identity,我想更改MVC5 ASP.NET应用程序的默认注册操作。我的方案是授权用户(如管理员)将登录并创建新用户。但使用下面的代码段,在创建用户后,当前登录用户将更改为注册用户 如何更改以下代码以避免更改登录用户 // POST: /Account/Register [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Register(RegisterViewModel

我想更改MVC5 ASP.NET应用程序的默认注册操作。我的方案是授权用户(如管理员)将登录并创建新用户。但使用下面的代码段,在创建用户后,当前登录用户将更改为注册用户

如何更改以下代码以避免更改登录用户

// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser() { UserName = model.UserName,Name=model.Name };
        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            await SignInAsync(user, isPersistent: false);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            AddErrors(result);
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
//POST:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
var user=new ApplicationUser(){UserName=model.UserName,Name=model.Name};
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
等待信号同步(用户,ispersist:false);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
加法器(结果);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}

删除符号同步并添加[授权]注释:

[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser() { UserName = model.UserName,Name=model.Name };
        var result = await UserManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            //await SignInAsync(user, isPersistent: false);
            return RedirectToAction("Index", "Home");
        }
        else
        {
            AddErrors(result);
        }
    }

    // If we got this far, something failed, redisplay form
    return View(model);
}
[HttpPost]
[授权]
[ValidateAntiForgeryToken]
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
var user=new ApplicationUser(){UserName=model.UserName,Name=model.Name};
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
//等待信号同步(用户,ispersist:false);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
加法器(结果);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
只需执行以下操作:

if (result.Succeeded)
{
    if (!User.IsAuthenticated)  // if they're already logged in, don't log in again
        await SignInAsync(user, isPersistent: false);
    return RedirectToAction("Index", "Home");
}

注册用户登录是因为在调用“SignInAsync”后,其主要工作是登录用户。。删除“SignInAsync”行。您将需要一个单独的仅管理操作,该操作不是
[AllowAnonymous]
,并检查此人是否为管理员;还传入两个用户名(管理员、新用户)。