任务
我想无法通过REST调用来查看提供的参数是否与DB中的注册用户相对应(由ASP.NET MVC模板创建的默认模式)。该呼叫将在应用程序之外进行初始化(例如,私人浏览器窗口,我无法控制的应用程序,在其他地方托管的WCF等)。安全和质量都没有抱负(尽管如果不复杂,它会很好)。
条件
我有一个ASP.NET项目(默认的MVC模板,没有注册/身份验证的更改)和一个创建帐户的用户,我可以在数据库中看到。他们可以登录并且能够看到具有角色等的页面。这部分可以使用。还有一个WCF,它暴露了这个小方法,它也有效(它在这里缩短了一点)。
[OperationContract]
[WebGet(UriTemplate = "Ping?name={name}&pass={pass}")]
public string Ping(string name, string pass)
{
AspNetUser user;
using (Context context = new Context())
user = context.AspNetUsers
.SingleOrDefault(_ => _.UserName == name);
return user?.Id;
}
问题
我不知道如何验证密码。在DB中,它存储为散列。通过服务的呼叫未经过身份验证,无法使用网站其他部分所采用的方法。我的配置文件没有成员资格(包括实际模板和工作安全性的任何内容)。该呼叫应该重新使用该站点注册的名称/密码,并且不应该设置自己的表。
问题
鉴于任务和条件:
尝试
我已阅读并尝试实施SignInManager(two parts中有一个非常好的博客)。这失败了,因为最后,他和我一起想要签名。此外,获取 HttpContext 令人困惑,因为我正在处理不在应用程序下的呼叫,而是通过服务从外部进行单独呼叫。
我还试图关注this blog,因为我希望排除EF后会更清楚地了解VS中默认MVC模板中的识别是如何完成的。这失败了,因为最后,我将使用EF创建的实体。此外,它有点信息过载,我不确定这是否是正确的道路。
另一种尝试是使用this blog中所示的成员资格。我已经仔细检查MSDN试图实现this validation的简单性,并找到了一个信息丰富的walk-through,以便将其拟合到配置文件中。这失败了,因为我没有尝试签署SQL的成员资格。而且当我想到“#em>验证"
这个词的时候,我的大脑就把我的鸟翻了过来。 回退
最糟糕的情况是,我向数据库添加了一个新表,当用户注册时(使用内置功能,我将从该控制器运行一个额外的代码,将数据复制到我能够的数据库中)处理)。它在很多方面都是 baaad 解决方案。