新足迹

 找回密码
 注册

精华好帖回顾

· 2013 雪中行--尼泊尔徒步 (2013-2-28) autrant · 澳洲(NSW)公立教育的基本流程 (2008-3-12) patrickzhu
· 猎梦人谈外汇保证金交易的本质 (2009-12-17) 猎梦人 · 参加活动: 喂饱7口人,折腾10道菜,花费100块大毛,川粤于2014--2015年间 (2015-1-5) ayeeda
Advertisement
Advertisement
查看: 1613|回复: 23

javascript fires after authentication [复制链接]

头像被屏蔽

禁止访问

发表于 2011-4-5 15:02 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
请问高手们, 哪个javascript event fires after authentication??
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-4-5 16:16 |显示全部楼层

太难了?

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2011-4-5 16:22 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Why do that? Even you can, it's a bad idea.
头像被屏蔽

禁止访问

发表于 2011-4-5 16:25 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-4-5 16:22 发表
Why do that? Even you can, it's a bad idea.


why bad idea?

发表于 2011-4-5 16:36 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
asp.net webform?

authentication之后没有任何js fire,它只是写加密后的cookie在browser中,不需要任何js,之后的每次request都是带着这个cookie到server side去验证是否被authenticate过(对权限要求的资源)。

你可以自己做一下实验,disable js, authentication一样work.
头像被屏蔽

禁止访问

发表于 2011-4-5 16:55 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-4-5 16:36 发表
asp.net webform?

authentication之后没有任何js fire,它只是写加密后的cookie在browser中,不需要任何js,之后的每次request都是带着这个cookie到server side去验证是否被authenticate过(对权限要求的资源)。

你可以自己做一下实验,disable js, authentication一样work.


谢谢乱胸!

评分

参与人数 1积分 +3 收起 理由
乱码 + 3 welcome!!

查看全部评分

Advertisement
Advertisement

发表于 2011-4-6 04:18 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-4-5 16:25 发表
why bad idea?


互联网的工作机制是什么? 是Client端发送一个请求,Server端对这个请求进行处理,再返回页面或者数据。现在99%以上的应用(包括ajax)是处于这种工作模式。 HTML5的时候出来个websocket, 在http连接后可以在Client和Server端建立一个TCP通信机制,有的浏览器支持这个东西,可是微软反对(因为安全漏洞),所以死翘翘了。

authentication当然有Event, 在server端,用asp.net可以得到,如果想在这个时候运行javascript, 这就是client端发送请求,Server端执行到某个阶段就返回javascript, 当然可以做到,有点long polling的味道但又不是,http://cometdaily.com/

总之,就算做到了,也会带来你所想象不到的很多问题,很不靠谱,比如说,还在authentication的时候,client端还没有建立页面, 再比如说,authentication的发生是由很多因素影响的,并不是每个请求都发生,甚至跟你的浏览器设置有关,等等。。。

评分

参与人数 1积分 +2 收起 理由
atransformer + 2 谢谢,我下面详述问题。

查看全部评分

特殊贡献奖章

发表于 2011-4-6 07:16 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
.net里这个authentication是干神马的?
不是用户登录吗
头像被屏蔽

禁止访问

发表于 2011-4-6 10:46 |显示全部楼层

这个问题似乎很蠢。 我来详述一下下。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
jquery call a WCF service
////////////////////////////////////////////////////////////////////
employeeXhr = $.getJSON('/Services/Service_Employee.svc/GetEmployees', request, function (data, status, xhr) {
                        employeeCache[term] = data.d;
                        if (xhr == employeeXhr) {
                            response(data.d);
                            employeeXhr = null;
                        }
                    });
头像被屏蔽

禁止访问

发表于 2011-4-6 10:49 |显示全部楼层

wcf service

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
[OperationContract]
        [WebGet(ResponseFormat = WebMessageFormat.Json)]
        public IEnumerable<string> GetEmployees(string term)
        {
            if (HttpContext.Current.Cache["EmployeeList"] == null)
             {
                 GetData();
                 HttpContext.Current.Cache.Insert
                     ("EmployeeList", (object)_employeeList,
                         null,
                         DateTime.UtcNow.AddHours(36d),
                         Cache.NoSlidingExpiration
                     );                 
             }
             else
             {              
                 _employeeList = HttpContext.Current.Cache["EmployeeList"] as List<string>;            
             }

            var ddd = from a in _employeeList
                      where a.StartsWith(term, StringComparison.InvariantCultureIgnoreCase)
                      select a;
            return ddd;
        }
头像被屏蔽

禁止访问

发表于 2011-4-6 10:56 |显示全部楼层

问题是这样的。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
隔一段时间,IIS 自动关闭不用的 site. 也就是,每天开始的时候,想让这个service 启动一下下。 于是,我想当然的在jquery ready的时候,先call 一次service.

$(function () {

            //////////////////////////////////
                      var employeeCache = {}, employeeXhr;        
                        employeeXhr = $.getJSON('/Services/Service_Employee.svc/GetEmployees', 'a', function (data, status, xhr) { });

            ////////////////////////////////
            $('#<% = TextBox_LeaverName.ClientID %>').autocomplete({
                source: function (request, response) {
                    var term = request.term;
                    if (term in employeeCache) {
                        response(employeeCache[term]);
                        return;
                    }
                    if (employeeXhr != null) {
                        employeeXhr.abort();
                    }

                    employeeXhr = $.getJSON('/Services/Service_Employee.svc/GetEmployees', request, function (data, status, xhr) {
                        employeeCache[term] = data.d;
                        if (xhr == employeeXhr) {
                            response(data.d);
                            employeeXhr = null;
                        }
                    });
                }
            });
            ////////////////////////////////

            //////////////////////////////////
        });
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-4-6 11:05 |显示全部楼层

但测试发现。

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这个时候,这个page 会出现,login in window. 显然,这个 jquery ready happens before authentication.

[ 本帖最后由 atransformer 于 2011-4-6 11:30 编辑 ]

发表于 2011-4-6 12:32 |显示全部楼层
此文章由 我不是你大爷 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 我不是你大爷 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-4-6 11:05 发表
这个时候,这个page 会出现,login in window. 显然,这个 jquery ready happens before authentication.


你和我一样是编程爱好者吧? 厨师给你诊断一下啊~

首先, 甭管你的jquery, 把它们全都comment掉, 估计你也会看到那个 login in window. .net 的authentication 和 authorization 在server 端保留session用来验证你受保护的application, 验证后发一个ticket放入cookie, 如果你cookieless, 就直接写在url里. session 会过期 -- (IIS停掉不用的site?厨子还是第一次听到), 每次过期都要从新authentication.

你请求的页根本就没有发到client end (有jquery 那个), jquery ready happens 个p 啊! server 端没有通过验证, 直接给你发了个login page. 很正常啊! 关客户端的javascript 球事?
头像被屏蔽

禁止访问

发表于 2011-4-6 14:54 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 我不是你大爷 于 2011-4-6 12:32 发表


你和我一样是编程爱好者吧? 厨师给你诊断一下啊~

首先, 甭管你的jquery, 把它们全都comment掉, 估计你也会看到那个 login in window. .net 的authentication 和 authorization 在server 端保留session用来验证你 ...


你比较搞。 没有红字行,当然不会login in window. 显然,这个 jquery ready happens before authentication.

发表于 2011-4-6 15:36 |显示全部楼层
此文章由 我不是你大爷 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 我不是你大爷 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-4-6 14:54 发表


你比较搞。 没有红字行,当然不会login in window. 显然,这个 jquery ready happens before authentication.


搞什么搞!

红行就是一个ajax server 请求, 你去掉后, 当你的textbox autocomplete 时一样让你 logon, 对不对? 只能说你当前的页可以anonymous访问, 顺便把你的 web.config 文件一起全粘上来.
头像被屏蔽

禁止访问

发表于 2011-4-6 15:39 |显示全部楼层

恩,我没说清楚

此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 我不是你大爷 于 2011-4-6 15:36 发表


搞什么搞!

红行就是一个ajax server 请求, 你去掉后, 当你的textbox autocomplete 时一样让你 logon, 对不对? 只能说你当前的页可以anonymous访问, 顺便把你的 web.config 文件一起全粘上来.


我是intranet site. 如果browser 设好了 proxy, 没有红行 不会 出现 logon window
Advertisement
Advertisement

特殊贡献奖章

发表于 2011-4-6 15:41 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你在用户login之前获得login之后的信息是不安全的
你如果想在用户login之后做这个ajax call的话,为什么不先获得login的信息(session或cookie)之后再来显示这行js代码。我的意思是根据session的信息动态的显示这行代码,就像动态显示html一样。
头像被屏蔽

禁止访问

发表于 2011-4-6 15:44 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-4-6 15:41 发表
你在用户login之前获得login之后的信息是不安全的
你如果想在用户login之后做这个ajax call的话,为什么不先获得login的信息(session或cookie)之后再来显示这行js代码。我的意思是根据session的信息动态的显示这行代码,就像动态显示html一样。


能否具体说说。 我的情况是 。 intranet + windows integrated authentication (anonymouse disabled)

发表于 2011-4-6 15:50 |显示全部楼层
此文章由 我不是你大爷 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 我不是你大爷 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 atransformer 于 2011-4-6 15:39 发表


我是intranet site. 如果browser 设好了 proxy, 没有红行 不会 出现 logon window


你说的logon window是什么?windows 系统缺省的? 还是你自己application 定制的?

首先要确认你的那个textbox的autocomplete是不是铁定能用, 根document ready 没有任何关系. 如果不能用, 说明你的plug-in没有被调用过, $getJSON没有发生过.

特殊贡献奖章

发表于 2011-4-6 15:51 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我不知道你这个环境
大概是这个意思
  1. //session_login is the value that identify user auth
  2. $(function () {

  3.             //////////////////////////////////
  4.             var employeeCache = {}, employeeXhr;
  5. <%
  6. if(session_login){
  7.         %>
  8.             employeeXhr = $.getJSON('/Services/Service_Employee.svc/GetEmployees', 'a', function (data, status, xhr) { });
  9. <%}%>
  10. ////////////////////////////////
  11. .....
复制代码
头像被屏蔽

禁止访问

发表于 2011-4-6 15:55 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 我不是你大爷 于 2011-4-6 15:50 发表


你说的logon window是什么?windows 系统缺省的? 还是你自己application 定制的?

首先要确认你的那个textbox的autocomplete是不是铁定能用, 根document ready 没有任何关系. 如果不能用, 说明你的plug-in没有被调用过, $getJSON没有发生过.


1, windows 系统缺省的
2, autocomplete 铁定能用,测试无数次了。
Advertisement
Advertisement
头像被屏蔽

禁止访问

发表于 2011-4-6 15:57 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-4-6 15:51 发表
我不知道你这个环境
大概是这个意思//session_login is the value that identify user auth
$(function () {

            //////////////////////////////////
            var employeeCache = {}, employeeXhr;

...


老大,我还是没说清楚??? 经过测试,这个 $(function ()  是发生在 authentication 前,也就是说,你的这个代码,永远不能运行。

特殊贡献奖章

发表于 2011-4-6 16:11 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你为什么要在authentication前运行这个?
我的理解是你无论用户是否login都要显示这个页面
如果用户login了就获得employee的资料
没有的话就不获取是不是?

如果是这样你就判断一下login的资料来决定是否运行这个js代码
我经常有js代码是跟着后台获取的数据变化的

原帖由 atransformer 于 2011-4-6 15:57 发表


老大,我还是没说清楚??? 经过测试,这个 $(function ()  是发生在 authentication 前,也就是说,你的这个代码,永远不能运行。
头像被屏蔽

禁止访问

发表于 2011-4-6 16:22 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
恩,确实给了我启发,谢谢啊。我先试试,成了告诉你。

原帖由 kr2000 于 2011-4-6 16:11 发表
你为什么要在authentication前运行这个?
我的理解是你无论用户是否login都要显示这个页面
如果用户login了就获得employee的资料
没有的话就不获取是不是?

如果是这样你就判断一下login的资料来决定是否运行这个js代码
我经常有js代码是跟着后台获取的数据变化的

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部