如何在MVVM应用程序中处理来自的持久登录

本文关键字:登录 处理 MVVM 应用程序 | 更新日期: 2023-09-27 18:26:49

我正在编写一个应用程序,它在加载之前显示登录表单,并向我以前开发的web应用程序发送POST请求。

我可以发送登录详细信息,然后返回200条消息,并可以接收该请求中的数据。但是,我现在希望在应用程序关闭后存储此登录信息,以允许用户不必每次打开应用程序时都登录,或者在这种情况下,当计算机重新启动时登录。(它将在启动时运行,但需要维护应用程序而不是WCF服务)

我使用C#中的HTTPWebRequest来处理对服务器的POST请求,并且我可以在服务器端制作cookie。我如何让我的应用程序知道这些cookie,并以安全的方式存储它们,以允许我的整个应用程序持续登录?我已经研究了许多在C#中存储cookie的方法,例如以下两个链接:

http://www.c-sharpcorner.com/uploadfile/mahesh/managing-cookies-in-a-wpf-application/

http://msdn.microsoft.com/en-us/library/dd920298(v=vs.95).aspx

然而,第一个链接中的代码给了我一个奇怪的cookie:

"CSCUser2=测试用户名;android_developer_C:_width=243px;__utma=1.1718972007.1316996246.1316996246.1316996246.1;__utmz=1.1316996246.1.1。utmcsr=(直接)|utmccn=(直接)| utmcmd=

所以我不确定这种方法是否是最好的?任何建议都将不胜感激。

如何在MVVM应用程序中处理来自的持久登录

我认为CookieContainer(即MSDN链接)是设置和获取cookie的正确方法(顺便说一句:请注意,您的问题与wpf或mvvm模式无关。它是一个通用的c#/.net/httpwebreqest主题)。

至于在用户机器上缓存可用于后续会话的凭据,有几种方法可以做到这一点。您可以将用户密码存储在安全位置,也可以存储从服务器发送给您的会话密钥。第二种方法的优点是会话密钥在时间上是有限的(例如一周),之后用户将不得不执行新的登录。会话密钥可以作为cookie从带外服务器传递给您,也可以通过特定的API传递给您。Web应用程序使用cookie是因为它们无法访问任何持久存储,但您的wpf应用程序可以将密码或会话密钥存储在任何需要的位置。

我建议您使用DPAPI在用户计算机上保留机密。谷歌搜索c#和DPAPI,看看如何在.net.

中做到这一点