多个聊天室SignalR ASP.NET MVC5

时间:2015-08-12 22:52:32

标签: asp.net-mvc-5 signalr chat

我一直在做很多阅读,一切似乎都已经过时或者对我来说有点害羞。 所以我创建了一个基于this tutorial的聊天应用程序。

虽然我有一些比这更先进的东西,但为了便于使用,我们假设这就是我所拥有的一切。您将如何从拥有多个聊天室和用户身份验证?

我已经阅读了一些关于群组的内容,我知道asp.net已内置身份验证,但我不确定实现此目的的最佳方法是什么。

现在我基本上只是在客户端解析他们的消息并将其发送到服务器以便在所有用户的屏幕上发布。我也想要一些持久的消息,所以如果他们断开连接并重新连接,他们仍然可以看到数据,就像我想的那样。

我不希望任何人写我的申请,只是一些指导意见将不胜感激!

1 个答案:

答案 0 :(得分:0)

让我们从身份验证开始。 SignalR基本上是通常的ASP.NET身份验证,所以如果你有一个带有用户和角色的应用程序(基本的MVC模板非常适合这个例子 - http://www.asp.net/mvc/overview/security这里你有MVC安全的所有资源,包括一些Pluralsight教程 - 您可以拥有一个具有Authorize属性的集线器,就像控制器一样 - http://www.asp.net/signalr/overview/security/hub-authorization - 这是集线器授权的官方文档。

基本上,除非用户登录,否则他不能:

  1. 通过聊天访问该页面。 (因为控制器使用Authorize属性装饰)

  2. 访问中心服务器方法,因为整个中心 - 或某些特定方法都使用Authorize属性进行修饰。

  3. 对于persistance部分,您可以使用SQL数据库来存储消息。 (并且由于您的应用程序中有用户 - 默认存储在SQL数据库中),因此使用相同的数据库来存储消息是合乎逻辑的。

    要进行包装,请使用单个用户帐户启动MVC模板,添加具有Authorize属性的控制器的新页面,使用{{1创建集线器(或仅一些特定方法)属性,你们都已经设置好了。

    您有一个只有经过身份验证的用户才能使用的SignalR应用程序。

    希望这会有所帮助。祝你好运!