【发布时间】:2017-02-02 14:56:30
【问题描述】:
我正在为我的网络系统类创建一个网站,我将在其中实现一个登录平台。网站通过身份验证后,用户将能够向其他用户发送消息,我将实现 SignalR 来执行实时消息传递。
我想创建一个系统,在 AngularJS 中我可以调用 C# 后端提供用户名和密码并进行身份验证。同时我还想使用 SignalR 的基于角色的身份验证来确保我的方法是安全的。
例子:
[Authorize(Roles = "Admin")]
public class AdminAuthHub : Hub
{
}
目前我已经编写了自己的代码来接受用户名和密码并对其进行哈希处理并存储哈希值。但是,我不想在这里重新发明轮子。我想使用基于 Microsoft 的身份验证系统,因为我正在使用 C# 后端和 SignalR 技术。
我目前正在使用 Microsoft Azure 进行托管,这很有效,但我最终将切换到我维护的本地托管 Windows Server。我听说过使用 Active Directory,但从未使用过它,因此必须进行大量设置才能为新服务器做好准备。
我的总体问题是我该走哪条路?另外,如果我严格按照微软的所有方式,在 Windows Server 2016 上设置活动目录是否简单?在我的研究中,我发现有一种 ASP.NET 方法可以针对 SQL Server 数据库对用户进行身份验证。这种方法是否更可取,因为系统可以在 ASP.NET 之外使用,并且数据采用我以前使用过的形式?
我是否编写自己的自定义身份验证逻辑、接受用户名和密码以及散列并使用我自己的表和数据库。然后在 SignalR 方面找到一种方法来设置用户变量并从我的数据库中设置他们的角色。然后只需在每个方法调用开始时执行检查。
【问题讨论】:
-
您使用的是什么 ASP.Net 框架? 4.5.2?核?您不需要使用 Active Directory - asp.net/identity 将是一个不错的起点。对于 AngularJS 1/2?您可能想看看 oAuth2 和 OpenId 连接以处理身份验证。
-
我提到 AngularJs 的唯一原因是因为网站的某些部分可能未连接到 SignalR,但仍需要执行经过身份验证的功能。例如简单地更改有关帐户的设置。但是,我可以只编写将数据发送到服务器并由服务器确定用户是否经过身份验证的 Angular 吗?在 Asmx 文件中运行的 C# 后端。我知道它已经过时了。
-
我建议花一些时间阅读不同的网络技术。您似乎想要实现的是一个半“静态”网站,它与 SignalR 挂钩,我相信您可以使用 ASP.Net MVC 实现您想要实现的任何目标。 “app.pluralsight.com/…”可能是一个不错的起点。
-
我对网站和网络技术并不完全陌生,但是我没有接受过网络技术方面的专业教育。我目前在我的着陆页上摇晃一个 default.aspx 页面,然后在着陆页中导航栏就在上面,还有一个 div 使用 angularjs ng-include 在其中加载其他页面。
-
没关系,每个人都必须从某个地方开始。 ASPX 页面在自以为是的声明中已成为过去。如果您浏览有关 MVC 和 WebAPI 的教程,您可能会发现更多您尝试在线实现的示例。
标签: c# asp.net angularjs authentication active-directory