快速注册

时间:2017-12-24 14:12:47

标签: c# asp.net asp.net-mvc authorization refactoring

我正在尝试解决一个问题,有两个应用程序:第一个ASP.NET MVC和第二个客户端 - 服务器应用程序。在ASP.NET MVC应用程序中进行授权后,用户还可以访问客户端 - 服务器应用程序。使用cookie或使用令牌实现此功能的最佳方法是什么?如果有一个有用的链接,我将不胜感激。

将有关授权用户的数据传输到Web应用程序的最佳方法是什么?

“粗暴”的模型,告诉我实施的内容。我提供它来大致表示我想要实现的目标。

WebAppSetCookies:

[HttpPost]
public ActionResult Index(ViewModelUserInfo user)
{
   if(user != null)
   {
      UserInfo acc = new UserInfo() { Username = user.Name, Password = user.Password };

      var searching = userDb.FirstOrDefault(f => f.Username == acc.Username && 
                                                 f.Password == acc.Password);

       if(searching != null)
       {
           HttpCookie cookie = new HttpCookie("user");
           cookie.Values["name"] = acc.Username;
           cookie.Values["password"] = acc.Password;

           Response.SetCookie(cookie);

           ViewBag.Authorization = "Successful!";

           return View(user);
       }
    }

    ViewBag.Authorization = "Wrong authorization!";

    return View();
}

WebAppGetCookies:

public ActionResult Index()
{
   UserInfo user;
   var cookie = Request.Cookies["user"];

   if (cookie != null)
   {
      user = new UserInfo() 
      { 
        Username = cookie.Values["name"], 
        Password = cookie.Values["password"] 
      };

      return View(user);
   }

   user = new UserInfo() { Username = "unknown", Password = "unknown" };

   return View(user);
}

1 个答案:

答案 0 :(得分:1)

如果两个网站都是同一根主机名的一部分,则只能共享HTTP Cookie,例如some.site.comanother.site.on.site.com。然后必须创建这样的cookie,并将其域部分设置为site.com。只有这样,浏览器才会将这些cookie发送给两者,无论哪个包含它们。之后,辅助目标网站将能够在处理过程中与他们合作。

如果两个站点共享更多只是根主机名,这将有效;例如然后,site1.on.site.comsite2.on.site.com都可以使用on.site.com Cookie。