我正在尝试解决一个问题,有两个应用程序:第一个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);
}
答案 0 :(得分:1)
如果两个网站都是同一根主机名的一部分,则只能共享HTTP Cookie,例如some.site.com
和another.site.on.site.com
。然后必须创建这样的cookie,并将其域部分设置为site.com
。只有这样,浏览器才会将这些cookie发送给两者,无论哪个包含它们。之后,辅助目标网站将能够在处理过程中与他们合作。
如果两个站点共享更多只是根主机名,这将有效;例如然后,site1.on.site.com
和site2.on.site.com
都可以使用on.site.com
Cookie。