如何在DB中保存登录详细信息 [英] How to save the login details in DB

查看:131
本文介绍了如何在DB中保存登录详细信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我创建了一个注册页面和登录页面,注册页面详细信息保存在数据库中,但登录详细信息未保存在数据库中。请告诉我如何在DB中保存登录详细信息(列名:LoginID用户名密码。

以下是我的代码。



在此先感谢。



我尝试过:



我的模特class:

  public   class  LoginViewModel 
{
[Key]
public int LoginID { get ; set ;}
[显示(名称= 用户名)]
public string UserName { get ; set ;}
[显示(姓名) = 密码)]
public string 密码{获取; set ; }

// 在我的ActionResult方法下面---

// GET:登录页面
public ActionResult Login()
{
return View();
}
// POST:登录页面
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login( string UserName, string 密码)
{
尝试
{
使用 var DbContext = new HrmDbContext())
{
var getUser =( from s in DbContext.userregisterviewmodels
其中 s.UserName == UserName || s.EmailID == UserName
选择 s).FirstOrDefault();
if (getUser!= null
{
var hashCode = getUser.VCode;
// 密码隐藏流程调用帮助程序类方法
var encodingPasswordString = Helper.EncodePassword(Password,hashCode);
// 检查登录详细信息用户名或密码
var query =( from s in DbContext.userregisterviewmodels
其中(s.UserName == UserName || s.EmailID == UserName)&& s.Password.Equals(encodingPasswordString)
选择 s).FirstOrDefault();
if (query!= null
{
// RedirectToAction(Details /+ id.ToString(),FullTimeEmployees);
// return View(../ Admin / Registration);网址中未更改的网址
返回 RedirectToAction( AfterLoggedIn Home);

}
ViewBag.ErrorMessage = Invallid用户名或密码;
return View();
}
ViewBag.ErrorMessage = Invallid用户名或密码;
return View();
}
}
catch (例外e)
{
ViewBag.ErrorMessage = 错误!!!联系abc@info.in;
return View();
}
}







以下是我的DbContext -

  public   class  HrmDbContext:DbContext 
{
public DbSet< userregisterviewmodel> userregisterviewmodels { get ; set ; }

public DbSet< loginviewmodel> loginviewmodels { get ; set ; }
}

解决方案

首先,您没有通过保存登录详细信息解释您的意思。什么是登录详细信息以及为什么要保存它们?



接下来,您显示了ZERO代码,可以将任何内容保存到数据库中。



查看您的DbContext,您的表名为viewmodels。数据库中保存的内容不是视图模型。您已经错误地命名了您的对象,并且不会导致代码中的大量混淆。



视图模型类用于在两者之间移动数据一个控制器和它正在与之交互的视图。它们永远不会保存到数据库中。



现在,您说过,您的Login方法从与用户输入的用户名匹配的数据库中检索userregisterviewmodel。您只需检查用户是否存在即可。之后,您将获得输入密码的哈希值,然后使用密码哈希值作为WHERE子句的一部分,返回数据库以获取用户对象的第二个查询。你不需要这样做!!您已拥有上一个查询中的用户对象。您所要做的就是将哈希值与您已有的哈希值进行比较。您不必返回数据库!



此代码中没有任何内容,因此您甚至可以尝试将任何内容保存到数据库中,直至登录详细信息。

Hi,

I have created a Registration page and login page, registration page details are saving in DB but login details are not saving in DB. Please let me know How to save the login details in DB like(column Names: LoginID UserName Password.
below is my code.

Thanks in Advance.

What I have tried:

My Model class:

 public class LoginViewModel
    {
        [Key]
        public int LoginID { get; set; }
        [Display(Name = "User Name")]
        public string UserName { get; set; }
        [Display(Name = "Password")]
        public string Password { get; set; }

//Below My ActionResult Method ---

//GET: Login Page
        public ActionResult Login()
        {
            return View();
        }
        //POST: Login Page
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Login(string UserName, string Password)
        {
            try
            {
                using (var DbContext = new HrmDbContext())
                {
                    var getUser = (from s in DbContext.userregisterviewmodels
                                   where s.UserName == UserName || s.EmailID == UserName
                                   select s).FirstOrDefault();
                    if (getUser != null)
                    {
                        var hashCode = getUser.VCode;
                        //Password Hasing Process Call Helper Class Method    
                        var encodingPasswordString = Helper.EncodePassword(Password, hashCode);
                        //Check Login Detail User Name Or Password
                        var query = (from s in DbContext.userregisterviewmodels
                                     where (s.UserName == UserName || s.EmailID == UserName) && s.Password.Equals(encodingPasswordString)
                                     select s).FirstOrDefault();
                        if (query != null)
                        {
                            //RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");    
                            //return View("../Admin/Registration"); url not change in browser    
                            return RedirectToAction("AfterLoggedIn", "Home");
                            
                        }
                        ViewBag.ErrorMessage = "Invallid User Name or Password";
                        return View();
                    }
                    ViewBag.ErrorMessage = "Invallid User Name or Password";
                    return View();
                }
            }
            catch (Exception e)
            {
                ViewBag.ErrorMessage = " Error!!! contact abc@info.in";
                return View();
            }
        }




below is my DbContext--

 public class HrmDbContext : DbContext
    {
public DbSet<userregisterviewmodel> userregisterviewmodels { get; set; }

        public DbSet<loginviewmodel> loginviewmodels { get; set; }
}

解决方案

First, you don't explain what you mean by "saving login details". What are "login details" and why are you saving them?

Next, you have show ZERO code that saves anything to the database.

Looking at your DbContext, you have your tables named as "viewmodels". What is saved in the database is NOT a view model. You've named your object incorrectly and don't in in a fashion that just leads to massive confusion in your code.

View Model classes are used to move data between a Controller and the View it is interacting with. They are NEVER saved to the database.

Now, having said that, your Login method retrieves a userregisterviewmodel form the database that matches the username entered by the user. All you do with it is check to see if the user exists. After that you get the hash value for the entered password and then go back tot he database for a second query for the user object using the password hash value as part of the WHERE clause. YOU DO NOT NEED TO DO THAT!! You already have the user object from the previous query. All you have to do is compare the hash value to the one you already have. You don't have to go back to the database!

Nowhere in this code so you even attempt to save anything to the database as far as "login details".


这篇关于如何在DB中保存登录详细信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆