2010-03-23 34 views
0

我正在考虑编写一个自定义的IPermission实现,但我不清楚它应该如何工作。我已经实施了IPrincipalIIdentity。我想完成的是能够根据当前的IPrincipal的授权而不是其角色来检查权限。通常,对于给定类型,授权是读取/添加删除/更新/无。所以我想写这样的东西:实施IPermission

[CustomPermission(SecurityAction.Demand, Type = typeof(Foo), MinimumAuthorization = AuthorizationFlags.Read)] 
public void SomeMethod(){} 

这可能吗?我查看了http://msdn.microsoft.com/en-us/library/system.security.ipermission.aspx的代码。这说明了如何实现这个接口,但是我不明白上面的伪代码如何能够根据这个类型的IPrincipal的授权进行检查。

回答

1

您的​​的执行IPermission.Demand应该能够查看Thread.Current.CurrentPrincipal,将其转换为您的自定义委托人并从那里调查您的授权数据。

+0

啊是的。 Demand方法没有在任何msdn示例中实现,所以我甚至都没有意识到它。谢谢! – joniba 2010-03-23 10:50:56