实体框架步骤问题

时间:2014-12-28 04:07:01

标签: asp.net-mvc entity-framework entity-framework-5

我正在试图找出别人的代码.... 这样做是从用户那里获取用户名和密码,并从数据库表中检查用户名和密码是否正确.... 他的DataLayer看起来像这样:

public class UserRepository : IUser
    {
        Context con = new Context();
        public UserDTO GetUser(string user)
        {
            User u = con.Users.Find(user);
            UserDTO User = new UserDTO();
            if (u != null)
            {
                User.Username = u.UserName;
                User.Password = u.Password;            
            }
            return User;
        }
    }

IUser界面:

    public interface IUser
        {
            UserDTO GetUser(string user);
        }

ServiceLayer看起来像这样:

public class UserService : IUserService
    {
        IUser data;

        public UserService(IUser data)
        {
            this.data = data;
        }

        public bool Authenticate(string user,string pwd)
        {
            UserDTO u = data.GetUser(user);
            if (u.Username == user && u.Password == pwd)
                return true;
            else
                return false;
        }
    }

IuserService接口:

 public interface IUserService
    {
        bool Authenticate(string user, string pwd);
    }

MVC控制器看起来像这样:

     public class HomeController : Controller
    {                          
        public ActionResult Log()
        {    
            return View();
        }          

        IUserService ser;
        public HomeController()
        {
            ser = new UserService(new UserRepository());
        }
        public ActionResult Login(Models.User user)
        {
            if (ser.Authenticate(user.UserName, user.Password))
            {
                ViewBag.Message = "Success";
            }
            else
                ViewBag.Message = "UnSuccess";

            return View();
        }

我无法真正理解他在这个Controller构造函数中做了什么(ser = new UserService(new UserRepository()))但代码运行完美.... 他想做什么,是他试图将这个控制器连接到DataLayer(UserRepository类)?

谢谢!!!

1 个答案:

答案 0 :(得分:1)

家庭控制器有一个Login Action方法,它接受一个用户模型,该模型有一个用户名和密码。

public ActionResult Login(Models.User user)

操作方法使用用户服务尝试验证用户的密码。 控制器调用UserService的Authenticate方法,该方法接收提供的用户名和密码。

if (ser.Authenticate(user.UserName, user.Password))

该服务调用UserRepositories GetUser方法,该方法尝试按用户名查找用户。

public bool Authenticate(string user,string pwd)
{
    UserDTO u = data.GetUser(user);

...

User u = con.Users.Find(user);

如果它在db中找到该用户名的用户,则检查用户名和密码返回用户对象。

        if (u != null)
        {
            User.Username = u.UserName;
            User.Password = u.Password;            
        }
        return User;

authenticate方法的其余部分检查此UserDTO的密码是否与提供给Login Action方法的初始密码匹配,并根据该密码返回true或false。

        if (u.Username == user && u.Password == pwd)
            return true;
        else
            return false;