用winform应用程序登录网站的解决方案
背景:
网站使用Membership机制来验证用户
要求:
c/s应用程序要用网站上的用户名和密码登录,同时在c/s端登录后,浏览网站时就无需再重复登录
思路:
1。.net网站对用户是否登录的判断依据是:检查浏览器客户端是否存在有效的cookie验证票据,如果在c/s winform中登录的同时,能让用户浏览器生成验证票据,则实现在winform中登录后,浏览网站时无需再重复登录的问题得已解决
具体操作:可在网站上建一个专用页面,功能为验证用户信息合法后,发放验证票据,然后在winform中登录成功后,模拟访问一下这个页面即可(注:经实践,不能用webRequest或webClient来实现,webRequest或webClient虽然可以达到用程序访问该页的效果,但并不能正确设置浏览器的cookie,正确的解决办法是在winform中放置一个webBrowser,让webBrowser来访问该页,这样就跟用户真正用浏览器浏览网页得到的效果才是一样的)
2。再来看第二个问题,如何在winform中使用网站的MemberShip数据库,这里提供二种基本的解决方案:
(a)在winform中引用System.Web,这样的话,就可以直接使用Membership类了,但不建议这样做,原因是:如果在网站的web.config中修改了membershipProvider的相关信息,比如applicationName后,winform中的设置也必须完全相同,否则的话,winform与webform对应的基本不是同一个application,出问题就不奇怪了
(b)利用webSerivce,在网站上建一个webService,功能为接受username和password进行验证,通过返回true,不通过返回false,在winform应用程序中,直接调用这个webservice即可