SignalR中属性跨域获取cookiee问题

SignalR中获取cookie的解决方法
普通类中:
HttpCookie cookie = new HttpCookie(CookieKeyCometUserName);
cookie.Name = CookieKeyCometUserN
cookie.Value = userN
cookie.Expires = SystemTime.Now().AddDays(1);
// 不加这句,就读不到,不知何故?
HttpContext.Current.Response.Cookies.Add(cookie);
Hub方法中:
HttpCookie cookie = HttpContext.Current.Request.Cookies[CookieKeyCometUserName];
if (cookie != null)
return cookie.Value.DESDecrypt();
return "";
获取Hub集线器实例的方式
SignalR 实现 Web 客户端与服务器实时通信
C# 获取IP地址
没有更多推荐了,查看: 7827|回复: 55
websocket之signalr通讯身份验证[源码]
asp.net mvc4.0 安装SignalR(一)
(出处: 架构师)
mvc4.0 如何使用SignalR(二)
(出处: 架构师)SignalR进行websocket通讯(三)
(出处: 架构师)
SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。 对话通过永久连接进行,允许客户端向服务器发送多个消息,并允许服务器做出相应答复,值得注意的是,还允许服务器向客户端发送异步消息。它和AJax类似,都是基于现有的技术。本身是一个复合体。一般情况下,SignalR会使用Javascrip{过滤}t的长轮询( long polling),实现客户端和服务端通信。在WebSockets出现以后,SignalR也支持WebSockets通信。当然SignalR也使用了服务端的任务并行处理技术以提高服务器的扩展性。它的目标整个 .NET Framework 平台,它也不限 Hosting 的应用程序,而且还是跨平台的开源项目,支持Mono 2.10+,觉得它变成是 Web API 的另一种实作选择,但是它在服务端处理联机的功能上比 ASP.NET MVC 的 Web API 要强多了,更重要的是,它可以在 Web Form 上使用。
上面是演示教程:
我们websocket用的服务端是signalr,然后,用到了owin,寄宿在了控制台上面!!!!!
OWIN的英文全称是Open Web Interface for .NET。
如果仅从名称上解析,可以得出这样的信息:OWIN是针对.NET平台的开放Web接口。
那Web接口是谁和谁之间的接口呢?是Web应用程序与Web服务器之间的接口,OWIN就是.NET Web应用程序与Web服务器之间的接口。
为什么需要这样一个接口呢?因为.NET Web应用程序是运行于Web服务器之中的,.NET Web应用程序需要通过Web服务器接收用户的请求,并且通过Web服务器将响应内容发送用户。如果没有这样一个接口,.NET Web应用程序就要依赖于所运行的具体Web服务器,比如ASP.NET应用程序要依赖于IIS。有了这个接口,ASP.NET应用程序只需依赖这个抽象接口,不用关心所运行的Web服务器。
所以,OWIN的作用就是通过引入一组抽象接口,解耦了.NET Web应用程序与Web服务器,再次体现了接口的重要性。在软件开发中,每次解耦都是一次很大的进步。
我们用3个不同的浏览器打开了,我们带有websocket通讯协议的网址。
第一个浏览器:我们注册了test3,密码为123的用户,然后进行登陆。
第二个浏览器:我们用admin账号,进行了登陆。
第三个浏览器:没有登陆,游客状态。
我们发现,登陆的账号,都可以用发送消息,然后,其他用户都可以收到消息(游客也可以收到消息)
发送消息,自动显示对方的昵称,并不显示登陆的账号。
最后,我们附上源码吧:
游客,如果您要查看本帖隐藏内容请
signalr服务端源码:
游客,如果您要查看本帖隐藏内容请
上一篇:下一篇:
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}{:1_12:}
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
回复看看!
- 本文出自架构师,原文地址:https://www.itsvse.com/thread-.html
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
提示: 作者被禁止或删除 内容自动屏蔽
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
正需要,谢谢分享!!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
感谢楼主分享
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
赞一个。谢谢楼主,正好需要,最近在研究。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
看看楼主的源码
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
学习学习学习学习学习学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
HAO //////////////////////
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
ding顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
正好需要,谢谢
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
免责声明:码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
Mail To:help@itsvse.com
Powered by Discuz! X3.4
Comsenz Inc.signalR client属性中的大致方法
时间: 00:07:49
&&&& 阅读:113
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&& T All { }
相当于持久连接中的 Broadcast。
T AllExcept(params string[] excludeConnectionIds);
给排除本人所有人发送消息。
T Client(string connectionId);
跟Send操作就是一样的了。
T Clients(IList&string& connectionIds);
和Send操作的重载方法一样,可以给一批指定的人发送。
T Group(string groupName, params string[] excludeConnectionIds);
给房间中的指定人发送消息: Clients.Group("room1", "asdfasdfads");
T Groups(IList&string& groupNames, params string[] excludeConnectionIds);
给房间列表中的指定人发送消息; 【天然的聊天室功能】
T User(string userId);
这个和Client是有区别的。 这个userId => this.Context.Request.User.Identity.Name 【form验证】
cookie中间件来做到singlar的身份验证。
  userId 是你自己定义的一个标识。
T Users(IList&string& userIds);标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/gouguo/p/6421890.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!I am building a web application using ASP.NET Web API and SignalR. I have a pretty good understanding of HTTP but this problem is beyond me.
Currently, I am setting a cookie on all AJAX requests to this API. Subsequent AJAX requests to the API send the cookie without issue.
However, I would like this cookie to also be used in the SignalR requests that establish a connection, but according to Chrome, the cookie is not being sent in these requests. I have the cookie set as HTTPOnly. Currently, everythin all requests go to localhost:port. The domain on the cookie is being set to localhost as well.
My SignalR connections look like this:
var connection = $.connection("/updates");
/* set handlers here */
connection.start(function () {
console.log("connection started!");
It seems as if Chrome thinks this is a CORS request and is withholding the cookies. The requests are on the same domain however, so this does not make much sense.
解决方案 Turns out I don't understand cookies well enough. Browsers seem to have trouble handling TLDs like localhost as the cookie domain. Therefore, I left the domain undefined, so that the cookie will default to the domain of the request.
However, the path parameter needed to be set to / in order to make sure the cookie is sent in all requests.
Once I made these changes, everything worked as expected, and my cookies were plainly visible in SignalR.
本文地址: &
我建立使用的ASP.NET Web API和SignalR的Web应用程序。我有HTTP的pretty的好理解,但这个问题超出了我。
目前,我设置的所有的AJAX请求这个API的cookie。随后的AJAX请求到API发送cookie的时候没有问题。
不过,我想也可以在建立连接的SignalR请求中使用这个cookie,但是根据浏览器,cookie不会被发送这些请求。我有饼干设为仅Http。目前,一切都在本地运行;所有的请求转到本地主机:端口。在cookie中的域被设置为本地主机以及
我SignalR的连接是这样的:
VAR连接= $■连接(“/更新”);
/ *设置在这里的处理程序* /
connection.start(函数(){
的console.log(“连接开始了!”);
看来,如果Chrome浏览器认为这是一个CORS请求,并扣留了饼干。该请求是在同一个域但是,所以这并没有太大的意义。
解决方案 原来我不明白的cookies不够好。浏览器似乎有麻烦处理顶级域名如本地主机作为Cookie域。所以,我离开了域定义,因此该cookie将默认为请求的域。
不过,需要被设置为 / ,以确保该cookie在所有的请求发送的路径参数。
在我做了这些改变,一切都如预期,和我的饼干是清晰可见的SignalR。
本文地址: &
扫一扫关注IT屋
微信公众号搜索 “ IT屋 ” ,选择关注
与百万开发者在一起
(window.slotbydup = window.slotbydup || []).push({
id: '5828425',
container: s,
size: '300,250',
display: 'inlay-fix'⊙0⊙→学习之路
原文:Hub中的 Context 使用了集线器后,会发现对比持久连接类少了OnConnectioned这样的事件,事实上是有的。需要我们去override
.这下似乎发现了什么问题,记得持久连接类中有connectionid与request参数,而这里什么都没有???如果有需求要拿到connectionid呢
事实上是不用去担心的,因为已经为我们封装了context上下文对象,在基类HubBase中可以看到,它是HubCallerContext类型的
F12去看一下这个类里面有什么东西,嗯 ConnectionId、Headers、QueryString…..等 都是我们可能会用到的 //
表示客户端的调用上下文。
public class HubCallerContext
初始化 Microsoft.AspNet.SignalR.Hubs.HubCallerContext 类的新实例。
当前的 HTTP 请求。
connectionId:
public HubCallerContext(IRequest request, string connectionId);
protected HubCallerContext();
获取调用客户端的连接 ID。
// 返回结果:
调用客户端的连接 ID。
public virtual string ConnectionId { get; }
获取请求的标头。
// 返回结果:
请求的标头。
public virtual INameValueCollection Headers { get; }
获取请求的查询字符串。
// 返回结果:
请求的查询字符串。
public virtual INameValueCollection QueryString { get; }
为当前 HTTP 请求获取 Microsoft.AspNet.SignalR.IRequest。
// 返回结果:
当前 HTTP 请求的 Microsoft.AspNet.SignalR.IRequest。
public virtual IRequest Request { get; }
获取请求的 Cookie。
// 返回结果:
请求的 Cookie。
public virtual IDictionary&string, Cookie& RequestCookies { get; }
获取请求的 System.Security.Principal.IPrincipal。
// 返回结果:
请求的 System.Security.Principal.IPrincipal。
public virtual IPrincipal User { get; }
阅读(...) 评论()}

我要回帖

更多关于 js获取session 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信