标签: delegation

ASP.NET传递Windows身份验证凭据

我有一个使用Windows身份验证的ASP.NET Web应用程序.此应用程序需要连接到另一个ASP.NET Web服务(也使用Windows身份验证)并使用从用户的浏览器收到的相同凭据.可以这样做,怎么做?

asp.net delegation windows-authentication

11
推荐指数
1
解决办法
5468
查看次数

Delphi:如何将子接口实现委托给子对象?

我有一个对象,它将一个特别复杂的接口的实现委托给子对象.这正是我认为的工作TAggregatedObject." child "对象维护对其" 控制器 " 的弱引用,并且所有QueryInterface请求都传递回父级.这样可以保持IUnknown 始终为同一对象的规则.

所以,我的父(即"Controller")对象声明它实现了IStream接口:

type
   TRobot = class(TInterfacedObject, IStream)
   private
      function GetStream: IStream;
   public
      property Stream: IStream read GetStrem implements IStream;
   end;
Run Code Online (Sandbox Code Playgroud)

注意:这是一个假设的例子.我选择这个词Robot 是因为它听起来很复杂,并且单词只有5个字母 - 它很短.我也选择IStream因为它的短.我打算使用 IPersistFileIPersistFileInit,但它们更长,并使示例代码更难实现.换句话说:这是一个假设的例子.

现在我有我的子对象将实现IStream:

type
   TRobotStream = class(TAggregatedObject, IStream)
   public
      ...
   end;
Run Code Online (Sandbox Code Playgroud)

所有剩下的,这就是我的问题开始的地方:创建RobotStream它被要求的时间:

function TRobot.GetStream: IStream;
begin
    Result := TRobotStream.Create(Self) as IStream;
end;
Run Code Online (Sandbox Code Playgroud)

此代码无法编译,错误Operator not applicable to this operand …

delphi interface delegation delphi-5

11
推荐指数
1
解决办法
7029
查看次数

如何正确处理排队的nsoperation的解除分配代理

在我当前的项目中,几个视图控制器(如vc)生成operation在静态NSOperationQueue上执行的NSOperation对象(如).当操作正在等待或运行时,它将通过委托(报告operation.delegate = vc未保留)向视图控制器报告.

这些操作可能需要一段时间,同时应用程序可以取消分配视图控制器(通过弹出导航控制器的堆栈).

到目前为止,一切都是故意的.包含静态NSOperationQueue的类有一种方法可以返回操作,因此视图控制器不会保留它们.它们只是alloc/init/autoreleased并放入队列.

现在这也导致了这个问题.在视图控制器解除分配后,对NSOperation的激烈委托的任何调用都将导致错误的访问冲突.根据我的理解,无法检查指针上的对象是否已被解除分配,如本问题所述.

我能想到的一个修复是保留操作并在dealloc上将operation.delegate设置为nil.但这是我最不受欢迎的解决方案,因为它会引入许多额外的ivars /属性来跟踪.

因此,我的问题是,有没有其他方法可以解决这个问题,如果是这样,你能在这里草拟一个吗?

干杯,
EP.

解决方案:对我来说最好的方法是对Guiliano的回答略有不同:

  • 在队列管理器中实现每个委托协议是不可行的(20多种不同的协议,使用50多种方法),因此我保留了直接委托分配.我改变的是进行分配呼叫的班级.这曾经是创建请求的类(和委托),但现在它被卸载到队列管理器.

  • 除了将委托分配给操作之外,队列管理器还拥有辅助可变字典以跟踪委托/操作对.

  • 每个委托实例都会调用一个[QueueManager invalidateDelegate:self]deallocation方法,然后查找属于该委托的请求并将其取消.然后还删除字典操作/委托对以允许适当地重新分配操作.

  • 最后,当KVO观察isFinished每个操作的属性时,可变dict保持清洁,以确保所有操作保留计数在它们完成后实际解除分配.

感谢Guiliano提供使用KVO破解这一点的提示!

exc-bad-access delegation objective-c nsoperation nsoperationqueue

11
推荐指数
1
解决办法
2147
查看次数

Win64上的接口委派

文档指出接口委派仅适用于Win32.目前我无法测试它,是否在64位编译器中停止了文档错误或接口委托?

delphi interface delegation delphi-xe2

11
推荐指数
1
解决办法
250
查看次数

为什么只能在kotlin中委托接口?

我见过几个类似的问题,但没有人解释为什么委托仅限于接口?

在实践中大多数时候我们都有一些实际上根本没有接口的东西,它是一个不实现任何功能但只提供一些功能或实现抽象类的类.

是否有任何基本限制迫使其仅限于接口,或者我们是否可以期望kotlin将来能够不受限制地授权?

如果我们想要使用组合而不是继承来扩展类的功能,这将特别有用.

class A {}
class B(val a: A) : A by a {}
Run Code Online (Sandbox Code Playgroud)

delegation kotlin

11
推荐指数
1
解决办法
998
查看次数

Kerberos,委托以及如何正确地执行此操作?

我有两个独立的自制应用程序需要相互通信.一个是前端应用程序(实际上是asp.net),另一个是会计应用程序的后端接口.后端接口不是专门为此前端创建的 - 它是许多其他应用程序用于与我们的产品集成的通用接口.

为方便用户,我们希望在前端应用程序中提供Windows身份验证.这意味着我们需要将凭据传递给后端应用程序,后端应用程序必须检查它们.

我们不希望将我们的前端设置为后端的"可信"应用程序,后端可以作为任何用户进行身份验证.如果前端被黑客入侵,那么它也会破坏后端系统.

据我了解,使用Windows身份验证执行此操作的一种方法是Kerberos委派.但是,这需要为要委派的用户和执行委派的计算机(带有我们的前端的服务器)显式启用.默认情况下,这些选项在Active Directory中被禁用,我怀疑许多系统管理员将保留关于为所有用户启用它们的保留.

此外,我不确定这是Kerberos代表团的意图.我不需要我们的前端来冒充连接的用户.我只需要证明这个用户已经对我进行了身份验证.

你会怎么做?

kerberos delegation

10
推荐指数
2
解决办法
1万
查看次数

访问被拒绝冒充当前用户访问网络文件夹

尝试列出特定文件夹中的目录和文件.此文件夹将取决于Windows身份验证(NTLM)登录的当前用户(Page.User),并从Active Directory(homedirectory属性)中检索.

我使用域用户访问AD并检索文件夹位置,这很好.

失败的是System.IO.DirectoryInfo.GetDirectories()即使使用模拟也要检索子文件夹.

这是我用于模仿的代码:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =  ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
Run Code Online (Sandbox Code Playgroud)

我已经检查过被模拟的用户是否可以访问该文件夹.

从我到目前为止发现,似乎我需要设置委派或Kerberos身份验证,这是真的吗?这些是实现这一目标的唯一方法吗?模仿不应该够吗?

.net c# asp.net impersonation delegation

10
推荐指数
1
解决办法
2638
查看次数

Objective-C委派向Java程序员解释

我是Objective-C的新手,但在Java方面经验丰富.在Java中是否存在Objective-C"委托"的等效概念,以便我可以更好地理解这个概念?是否有办法在Java中模拟委派概念?

java delegation objective-c

9
推荐指数
2
解决办法
2564
查看次数

将事件委派给Backbone中的父视图

我的观点TuneBook有几种类型的子视图ClosedTune.每个曲调我也有单独的整页视图OpenTune.同样的事件中约束ClosedTuneOpenTune,所以我设计我的应用程序,使他们无论从共享"抽象"视图继承Tune.

为了使我的应用程序更具可扩展性,我希望将每个事件ClosedTune委托给TuneBook,但为了可维护性,我希望使用相同的处理程序(存储在其中的处理程序Tune)TuneBook(尽管它们显然需要包含在某些函数中).

我遇到的问题是,TuneBook找到正确ClosedTune的调用处理程序.构建这个的好方法是什么,还是有其他好的解决方案将事件委托给父视图?

注意 - 不是Backbone View的重复:从父类继承和扩展事件(这是关于从父类继承的子节点,而我问的是DOM中父节点的子节点的子节点)

javascript model-view-controller events delegation backbone.js

9
推荐指数
2
解决办法
1万
查看次数

Kotlin的部分班级代表团

如何在Kotlin中部分委托方法/字段?

具体来说:这里我试图User从接口继承类TraitAmarked: Boolean在包装器中实现字段StateA.这将清理User实现,因为marked它只是一个状态字段.注意,TraitA不能是一个类,因为我想使用几个这样的接口:User() : TraitA by StateA, TraitB by StateB, ..

/* does not compile (Kotlin M12) */
interface TraitA {
    var marked: Boolean

    fun doStaffWithMarked()  // must be overridable
}

class StateA() : TraitA {
    override var marked = false
}

class User() : TraitA by StateA(){
    override fum doStaffWithMarked() {
        //...all fancy logic here...
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是在一个地方实现所有:

class User() : TraitA{
    override var …
Run Code Online (Sandbox Code Playgroud)

delegation multiple-inheritance kotlin

9
推荐指数
1
解决办法
3185
查看次数