Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET标识缺少字段_Asp.net_.net_Asp.net Identity - Fatal编程技术网

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”是一个单词,没有空格。