2010-03-08 35 views
3

我目前正在使用DotNetOpenAuth来使ASP.NET(C#)网站使用OpenID代替用户和会话处理的普通登录密码例程。在ASP.NET中使用OpenID进行会话管理和链接用户帐户

到现在为止,我已经添加了DotNetOpenAuth.dll到我的项目,并试图用下面的测试登录页面:

<rp:OpenIdLogin ID="OpenIdLogin1" runat="server" /> 

当我运行页面,我输入一个有效者myOpenID网址和网站重定向到在者myOpenID页面,在这里我输入我的密码,并在成功时,它返回到我的default.aspx,由于我web.config如下:

<authentication mode="Forms"> 
    <forms defaultUrl="/Default.aspx" loginUrl="~/Login.aspx"/> 
</authentication> 

现在,用户“登录”,如何能掌握我的会议?目前,我不知道我能做什么,例如,检查会话是否仍然存在或者如何终止会话。

我的基本问题是,一旦用户使用OpenID进行身份验证后,如何管理会话?


[更新]

我现在用下面的检查认证:HttpContext.Current.User,并与我现在可以检查用户是否与会话认证。

现在有什么方法可以将我数据库中存储的用户详细信息与openid帐户“链接”吗?

回答

3

带有OpenIdLogin控件的OpenID登录名(默认情况下)与从ASP.NET的角度来看用户名+密码登录没有区别。正如您发现HttpContext.Current.User基于ASP.NET FormsAuthentication发送给浏览器的HTTP cookie为每个传入的HTTP请求设置,以保持会话从请求到请求一致。当您处于页面或其代码隐藏状态时,Page.User属性是更方便的手段。

但是,如果您要进行访问控制,而不是检查每个页面中是否有登录用户,最好在您的web.config文件中使用<authorization>标记强制用户在访问某个特定用户之前登录页面或页面目录。

就链接用户详细信息而言,您想要与用户的详细信息关联的密钥是OpenID声明的标识符,这是OpenIdLogin自动分配给FormsAuthentication的用户名值的密码。因此,您可以根据HttpContext.Current.User.Identity.Name的值检索或存储数据库中的用户详细信息,这将成为每位用户可靠且经过验证的独特价值。

相关问题