作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 DotNetOpenId 库在测试网站上添加 OpenID 支持。出于某种原因,它在 Firefox 上运行时不断给我以下错误。请记住,我使用的是 localhost,因为我正在我的本地机器上测试它。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DotNetOpenAuth.OpenId.Extensions.ProviderAuthenticationPolicy;
using DotNetOpenAuth.OpenId.Extensions.SimpleRegistration;
using DotNetOpenAuth.OpenId.RelyingParty;
namespace TableSorterDemo
{
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var openid = new OpenIdRelyingParty();
if (openid.GetResponse() != null)
{
switch (openid.GetResponse().Status)
{
case AuthenticationStatus.Authenticated:
var fetch = openid.GetResponse().GetExtension(typeof(ClaimsResponse)) as ClaimsResponse;
var nick = fetch.Nickname;
var email = fetch.Email;
break;
}
}
}
protected void OpenIdLogin1_LoggedIn(object sender, OpenIdEventArgs e)
{
var openid = new OpenIdRelyingParty();
if(openid.GetResponse() != null)
{
switch(openid.GetResponse().Status)
{
case AuthenticationStatus.Authenticated:
var fetch = openid.GetResponse().GetExtension(typeof (ClaimsResponse)) as ClaimsResponse;
var nick = fetch.Nickname;
var email = fetch.Email;
break;
}
}
}
protected void OpenIdLogin1_LoggingIn(object sender, OpenIdEventArgs e)
{
var openid = new OpenIdRelyingParty();
var req = openid.CreateRequest(OpenIdLogin1.Text);
var fetch = new ClaimsRequest();
fetch.Email = DemandLevel.Require;
fetch.Nickname = DemandLevel.Require;
req.AddExtension(fetch);
req.RedirectToProvider();
return;
}
}
}
此外,如果我在 Chrome 中运行相同的页面,则会得到以下信息:
登录失败:此消息已被处理。这可能表明正在进行重放攻击。
最佳答案
重播攻击检测是您两次调用 GetResponse()
的结果。你不能那样做。相反,只需将对 GetResponse()
的一次调用的结果分配给一个局部变量,然后检查它是否为 null,否则就使用它。
关于“未找到 OpenID 端点”错误,您是针对本地主机 OpenID 还是针对由外部方(如 Yahoo)托管的 OpenID 进行测试?
关于c# - 未找到 OpenID 终结点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2520493/
据我所知,不能保证 Object.finalize() 总是被调用。但是如果有重要的非GC资源,并且用户没有意外调用close(),我该如何释放该资源?PS。 .NET中的Object.Finaliz
我是一名优秀的程序员,十分优秀!