我正在尝试在Intranet ASP.Net Web应用程序中使用Impersonation和Delegation,以便将经过身份验证的用户凭据传递到SQL Server.
Web服务器和SQL服务器是两个独立的计算机,但在同一个域中,因此需要委派.
我做了以下事情:
<authentication mode="Windows"/>并<identity impersonate="true"/>在我的web-app的web.config中.显然这应该都可以,但它没有(SQL Server拒绝访问匿名用户 - "登录失败的用户'NT AUTHORITY\ANONYMOUS LOGON'").
在IIS7中,应用程序池设置为使用集成Pipleline模式,并使用NetworkService Identity运行.该网站仅启用了Windows身份验证,关闭了扩展保护,启用了内核模式身份验证,并且NTLM是提供者.
我读过的所有网页似乎表明我的设置应该有效.我错过了什么?
http://jsfiddle.net/walkerneo/QqkkA/
我在这里看到很多问题要么在javascript中询问或回答事件委托,但是我还没有看到如何将事件委托用于不会成为click事件目标的元素.
例如:
HTML:
<ul>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
<li><div class="d"></div></li>
</ul>?
Run Code Online (Sandbox Code Playgroud)
CSS:
ul{
padding:20px;
}
li{
margin-left:30px;
margin-bottom:10px;
border:1px solid black;
}
.d{
padding:10px;
background:gray;
}
?
Run Code Online (Sandbox Code Playgroud)
如果我想在单击时添加单击事件来处理li元素,该怎么办?如果我将一个事件处理程序附加到ul元素,则divs将始终是目标元素.除了在单击函数中检查目标元素的每个父元素之外,我该如何实现?
编辑:
我想使用事件委托而不是:
var lis = document.getElementsByTagName('li');
for(var i=0;i<lis.length;i++){
lis[i].onclick = function(){};
}
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
document.getElementsByTagName('ul')[0].addEventListener('click',function(e){
// e.target is going to be the div, not the li
if(e.target.tagName=='LI'){
}
},false);
Run Code Online (Sandbox Code Playgroud)
编辑:我对如何使用Javascript库不感兴趣,我对他们如何做以及如何使用纯js感兴趣.
我目前正在使用ClaimID并在我的网站上拥有以下数据以允许委派:
<link rel="openid.server" href="http://openid.claimid.com/server" />
<link rel="openid.delegate" href="http://openid.claimid.com/tjrobinson" />
Run Code Online (Sandbox Code Playgroud)
Google是否有相同的网址?如果没有,将来有没有提及支持?
在任何人将此标记为重复之前,我都知道这个现有问题:如何将OpenId委派给Google Apps.但是,该问题专门针对Google Apps,我只想知道我是否可以使用普通的@ gmail.com帐户使用OpenID委派?
我正在处理一些异步通信情况(事件驱动的XML解析,NSURLConnection响应处理等).我将尝试简要解释一下我的问题:
在我目前的场景中,有一个服务提供者(可以与xml解析器通信或进行一些网络通信)和一个可以要求服务提供者异步执行某些任务的客户端.在这种情况下,当服务提供者完成其处理时,它必须将结果传回给客户端.
我试图找到一种模式或经验法则来实现这种事情,我看到了3种可能的解决方案:
1.使用委托模式:客户端是服务提供者的委托,它将在任务完成时收到结果.
2.使用目标/操作方法:客户端要求服务提供者执行任务并传递一个选择器,该选择器必须在服务提供者完成任务后调用.
3.使用通知.
(更新)经过一段时间尝试解决方案#2(目标和行动)后,我得出的结论是,在我的情况下,最好使用委托方法(#1).以下是每个选项的优缺点,我看到它们:
授权方法:
1(+)选项1的优点是我们可以检查编译时错误,因为客户端必须实现服务提供者的委托协议.
1( - )这也是一个缺点,因为它导致客户端与服务提供商紧密耦合,因为它必须实现其委托协议.
1(+)它允许程序员轻松浏览代码并找到客户端的哪种方法,服务提供者正在调用以传递其结果.
1( - )从客户端的角度来看,一旦获得结果,找到服务提供者将调用的方法并不容易.它仍然很简单,只需转到委托协议方法,就是这样,但#2方法更直接.
1( - )我们必须编写更多代码:定义委托协议并实现它.
1( - )另外,委托模式应该用于委派行为.从语义上讲,这种情况不一定是授权的确切情况.
行动/目标方法
2(+)选项2的优点是,当调用服务提供者方法时,还必须指定指定回调操作的@selector,以便程序员知道将调用哪个方法来处理结果.
2( - )与此相反,在浏览服务提供商代码时很难找到在客户端中回调哪种方法.程序员必须转到服务调用,看看传递了哪个@selector.
2(+)这是一个更加动态的解决方案,可以减少部件之间的耦合.
2( - )也许是最重要的事情之一:它可能导致运行时错误和副作用,因为客户端可以将不存在的选择器传递给服务提供者.
2( - )使用简单和标准的方法(#performSelector:withArgument:withArgument :),服务提供者最多只能传递2个参数.
声明:
结论:此时,我会选择委托机制.这种方法提供了更高的安全性,并允许轻松浏览代码以跟踪向委托发送服务提供者操作结果的后果.关于这个解决方案的负面影响是:它是一个更静态的解决方案,我们需要编写更多的代码(协议相关的东西),从语义上讲,我们不是真正谈论委托,因为服务提供商不会委托任何东西.
我错过了什么吗?你推荐什么,为什么?
谢谢!
Groovy中@Delegate和@Mixin AST转换之间有什么区别?
也许我的问题与OO有关,当应用不同的模式时,我使用两者并且我可以实现相同的行为.
class Person {
String name = "Clark"
def walk() { "Walk" }
}
@Mixin(Person)
class Superhero {
def fly() { "Fly" }
}
def superman = new Superhero()
assert superman.name == "Clark"
assert superman.walk() == "Walk"
assert superman.fly() == "Fly"
Run Code Online (Sandbox Code Playgroud)
class Person {
String name = "Clark"
def walk() { "Walk" }
}
class Superhero {
@Delegate Person person
def fly() { "Fly" }
}
def superman = new Superhero(person: new Person())
assert superman.name …Run Code Online (Sandbox Code Playgroud) groovy design-patterns delegation abstract-syntax-tree mixins
不是从构造函数调用虚函数和纯虚函数的重复:
前一个问题涉及C++ 03,而不是C++ 11中新的构造函数委派行为,并且该问题没有通过使用委托来确保在执行纯虚拟实现之前正确构造来解决未定义行为的问题.
在C++ 11中,在构造期间在类的构造函数中调用Pure Virtual函数有什么危险,但是在通过构造函数委托"完全构造"类/对象之后?
显然,在C++ 11规范的某个地方存在这样的约束,
可以为正在构造的对象调用成员函数(包括虚拟成员函数,10.3).类似地,正在构造的对象可以是typeid运算符的操作数. - [C++工作草案]的12.6.2#13(http://www.open-std.org/jtc1/sc22/wg21/docs/ papers/2011/n3242.pdf)找不到已发布规范的"合理使用"版本.
一旦任何构造函数完成执行,C++ 11就会考虑构造一个对象.由于将允许多个构造函数执行,这意味着每个委托构造函数将在其自己类型的完全构造的对象上执行.派生类构造函数将在其基类中的所有委托完成后执行.- 维基百科说这是C++ 11的事情.
实际C++ 11参考未知.
以下示例在Visual Studio 2012 C++编译器的Nov CTP中编译和运行RUNS:
#include <string>
/**************************************/
class Base
{
public:
int sum;
virtual int Do() = 0;
void Initialize()
{
Do();
}
Base()
{
}
};
/**************************************/
// Optionally declare class as "final" to avoid
// issues with further sub-derivations.
class Derived final : public Base
{
public:
virtual int Do() override final
{ …Run Code Online (Sandbox Code Playgroud) 有时,C++的隐私概念让我感到困惑:-)
class Foo
{
struct Bar;
Bar* p;
public:
Bar* operator->() const
{
return p;
}
};
struct Foo::Bar
{
void baz()
{
std::cout << "inside baz\n";
}
};
int main()
{
Foo::Bar b; // error: 'struct Foo::Bar' is private within this context
Foo f;
f->baz(); // fine
}
Run Code Online (Sandbox Code Playgroud)
自从Foo::Bar就是private,我不能宣布b在main.然而,我可以从方法中调用方法Foo::Bar.为什么这是允许的?这是意外还是设计?
哦等等,它会变得更好:
Foo f;
auto x = f.operator->(); // :-)
x->baz();
Run Code Online (Sandbox Code Playgroud)
即使我不被允许命名类型Foo::Bar,它也适用于auto......
诺亚写道:
在类定义中定义的类型名称不能在没有限定条件的类之外使用.
只是为了好玩,以下是从外面获取类型的方法:
#include <type_traits> …Run Code Online (Sandbox Code Playgroud) 我习惯在我的代码中使用Objective-C协议; 他们对很多事情都很不可思议.但是,在C++中,我不确定如何完成同样的事情.这是一个例子:
在Obj-C中,这很简单,但我无法弄清楚如何在C++中实现它.它甚至可能吗?
我有一对在C++ 03风格下运行良好的构造函数.其中一个构造函数调用超类(或基类)构造函数......
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
refresh();
}
...
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何使用新的C++ 11委托ctor功能来解决这个问题.但是,以下代码给出以下编译器错误...
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), Window(){}
Run Code Online (Sandbox Code Playgroud)
"委托构造函数的初始化程序必须单独出现"......
有没有办法解决??
有人可以提供一些见解,了解何时通过DelegateClass(例如Seller < DelegateClass(Person))使用委托以及何时Seller < Person在ruby中使用类继承(例如)?
class Seller < DelegateClass(Person)
def sales
...
end
end
class Seller < Person
def sales
...
end
end
Run Code Online (Sandbox Code Playgroud)
当我在Github上查看Ruby on Rails源代码时,我发现了很多用途DelegateClass.
delegation ×10
c++ ×4
c++11 ×2
constructor ×2
objective-c ×2
asp.net ×1
cocoa ×1
dom-events ×1
events ×1
gmail ×1
groovy ×1
iis-7 ×1
inheritance ×1
iphone ×1
javascript ×1
kerberos ×1
mixins ×1
openid ×1
pimpl-idiom ×1
private ×1
protocols ×1
pure-virtual ×1
ruby ×1
superclass ×1
target ×1