使用Web服务进行身份验证的自定义成员

时间:2012-05-31 16:21:09

标签: asp.net asp.net-mvc-3 web-services membership-provider

我正在ASP.NET MVC 3中构建Web门户,它使用远程Web服务作为与数据库通信的唯一方式。 Web服务要求始终在请求标头中传递用户名/密码,否则拒绝该呼叫。

我已覆盖ASP.NET成员资格,以便我的ValidateUser方法将用户名/密码发送到Web服务登录方法,如果身份验证成功则返回true / false。它与使用MVC 3 Empty网络模板提供的AcountController相当不错。由于我必须在每个Web服务调用上传递用户名/密码,因此我将它们保存在Session中。

我的问题是:

如果我关闭浏览器并重新打开它...我仍然登录到网站,但我的会话变量已过期,因此我的Web服务请求都没有被接受,即使我仍然使用凭据登录。

我正在寻找如何将用户登录状态与会话状态同步的好建议。要么保持它们是持久的,直到使用注销,或者让它们都在浏览器关闭时处理。

感谢所有建议:)

2 个答案:

答案 0 :(得分:1)

当用户使用您的AccountController登录时,请尝试设置auth cookie,如下所示:

FormsAuthentication.SetAuthCookie(model.UserName, false);

这应该告诉ASP.NET在浏览器窗口关闭时删除cookie。然后,当用户打开一个新的浏览器时,会话和auth cookie都应该被销毁。

答案 1 :(得分:0)

会话是客户端的cookie。表单身份验证(使用您的成员资格提供程序)也使用cookie。

他们是不同的。

您的身份验证票证或Cookie是否持久存在? This MS KB会比我在这里更详细地解释事情和场景......

H个。

相关问题