C# ASP.NET MVC5标识:注册后避免更改登录用户
我想更改MVC5 ASP.NET应用程序的默认注册操作。我的方案是授权用户(如管理员)将登录并创建新用户。但使用下面的代码段,在创建用户后,当前登录用户将更改为注册用户 如何更改以下代码以避免更改登录用户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
// 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]
,并检查此人是否为管理员;还传入两个用户名(管理员、新用户)。