ASP.NET标识缺少字段
在新建的ASP.NET标识缺少字段,asp.net,.net,asp.net-identity,Asp.net,.net,Asp.net Identity,在新建的ASP.NET标识表下我看不到一些字段,如已批准、上次活动等 我们是否使用概要文件并创建自定义代码来管理这些字段 也就是说,在这里 [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (ModelState.IsValid) {
ASP.NET标识表下
我看不到一些字段,如已批准、上次活动等
我们是否使用概要文件并创建自定义代码来管理这些字段
也就是说,在这里
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
// Use profile field and update it... ???
user.LastActivity = DateTime.Now;
UserManager.Update(user);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务登录(LoginView模型,字符串返回URL)
{
if(ModelState.IsValid)
{
var user=await UserManager.FindAsync(model.UserName,model.Password);
如果(用户!=null)
{
等待符号同步(用户,model.RememberMe);
//使用配置文件字段并更新它???
user.LastActivity=DateTime.Now;
UserManager.Update(用户);
返回重定向到本地(returnUrl);
}
其他的
{
AddModelError(“,“无效的用户名或密码”);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
根据注释,通过查看代码,您似乎正在创建一个模式。太好了
在MVVM模式中,有两种模型。域模型(DM)表示数据库模型,视图模型(VM)表示视图。DM包含数据库的所有与模式相关的数据,VM具有视图的用户验证、错误消息等。因此,您的VM没有(或可能没有)所有的数据库字段。您只需要将需要传递给VM中的用户的内容
您可以根据需要向VM添加更多字段 根据注释,通过查看代码,您似乎正在创建一个模式。太好了 在MVVM模式中,有两种模型。域模型(DM)表示数据库模型,视图模型(VM)表示视图。DM包含数据库的所有与模式相关的数据,VM具有视图的用户验证、错误消息等。因此,您的VM没有(或可能没有)所有的数据库字段。您只需要将需要传递给VM中的用户的内容
您可以根据需要向VM添加更多字段 UserManager.FindAsync返回初始化时传递给它的类型。因此在本例中,我假设
var user=await UserManager.FindAsync(model.UserName,model.Password)中的用户类型代码>是IdentityUser
。因此,在AccountController的构造函数中,您将传入一个UserManager并将其设置为本地属性。您需要将IdentityUser(以及所有相关代码)更改为您自定义的配置文件。e、 g
public class CustomUser : IdentityUser
{
public DateTime LastActivityDate { get; set; }
public bool IsApproved { get; set; }
}
public class AccountController : Controller
{
public UserManager<CustomUser> UserManager { get; set; }
public AccountController() : this(new UserManager<CustomUser>(new UserStore<CustomUSer>()))
{
}
public AccountController(UserManager<CustomUser> userManager)
{
UserManager = userManager;
}
public async Task<ActionResult> Login(LoginViewModel model string returnUrl)
{
if (ModelState.IsValid)
{
CustomUser user = await UserManager.FindAsync(model.UserName, model.Password);
//now we have access to the custom fields added.
user.LastActivityDate = DateTime.Now;
UserManager.Update(user); // Update DB field
}
}
}
公共类CustomUser:IdentityUser
{
公共日期时间LastActivityDate{get;set;}
公共布尔值已批准{get;set;}
}
公共类AccountController:控制器
{
公共用户管理器用户管理器{get;set;}
public AccountController():此(新的UserManager(新的UserStore()))
{
}
公共帐户控制器(用户管理器用户管理器)
{
UserManager=UserManager;
}
公共异步任务登录(LoginViewModel模型字符串返回URL)
{
if(ModelState.IsValid)
{
CustomUser=await UserManager.FindAsync(model.UserName,model.Password);
//现在我们可以访问添加的自定义字段。
user.LastActivityDate=DateTime.Now;
UserManager.Update(user);//更新数据库字段
}
}
}
UserManager.FindAsync返回初始化时传递给它的类型。因此在本例中,我假设var user=await UserManager.FindAsync(model.UserName,model.Password)中的用户类型代码>是IdentityUser
。因此,在AccountController的构造函数中,您将传入一个UserManager并将其设置为本地属性。您需要将IdentityUser(以及所有相关代码)更改为您自定义的配置文件。e、 g
public class CustomUser : IdentityUser
{
public DateTime LastActivityDate { get; set; }
public bool IsApproved { get; set; }
}
public class AccountController : Controller
{
public UserManager<CustomUser> UserManager { get; set; }
public AccountController() : this(new UserManager<CustomUser>(new UserStore<CustomUSer>()))
{
}
public AccountController(UserManager<CustomUser> userManager)
{
UserManager = userManager;
}
public async Task<ActionResult> Login(LoginViewModel model string returnUrl)
{
if (ModelState.IsValid)
{
CustomUser user = await UserManager.FindAsync(model.UserName, model.Password);
//now we have access to the custom fields added.
user.LastActivityDate = DateTime.Now;
UserManager.Update(user); // Update DB field
}
}
}
公共类CustomUser:IdentityUser
{
公共日期时间LastActivityDate{get;set;}
公共布尔值已批准{get;set;}
}
公共类AccountController:控制器
{
公共用户管理器用户管理器{get;set;}
public AccountController():此(新的UserManager(新的UserStore()))
{
}
公共帐户控制器(用户管理器用户管理器)
{
UserManager=UserManager;
}
公共异步任务登录(LoginViewModel模型字符串返回URL)
{
if(ModelState.IsValid)
{
CustomUser=await UserManager.FindAsync(model.UserName,model.Password);
//现在我们可以访问添加的自定义字段。
user.LastActivityDate=DateTime.Now;
UserManager.Update(user);//更新数据库字段
}
}
}
您的模型是一种LoginViewModel
而不是域模型。域模型可能有这些字段,并为您自动更新。@Kaf-Well。。。如何切换到其他型号?他们之间有什么不同?提前谢谢你的回答,把它放在这里,这样我就可以投票了。仅供参考,肯特先生,“ASP.NET”是一个单词,没有空格。你的模型是一种LoginViewModel
而不是域模型。域模型可能有这些字段,并为您自动更新。@Kaf-Well。。。如何切换到其他型号?他们之间有什么不同?提前谢谢你的回答,把它放在这里,这样我就可以投票了。仅供参考,肯特先生,“ASP.NET”是一个单词,没有空格。