问题列表 - 第12006页

ASP.NET - 获取DirectoryEntry/SID的主体/相对标识符(RID)

我在自定义MembershipProvider类中使用Active Directory来验证ASP.NET 2.0 Intranet应用程序中的用户,并将其sid与应用程序的配置文件相关联.

ActiveDirectoryMembershipProvider被使用时,ProviderUserKey该对象MembershipUser是如下

SecurityIdentifier sid = (SecurityIdentifier)Membership.GetUser().ProviderUserKey;
string sidValue = sid.ToString();

/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX-YY"  */
Run Code Online (Sandbox Code Playgroud)

据我了解,它YY是命名空间中的主体(也称为组/域).

使用自定义MembershipProvider时,我可以使用objectSidDirectoryEntry对象的属性获取sid

DirectoryEntry entry = new DirectoryEntry(path, username, password);
SecurityIdentifier sid = new SecurityIdentifier((byte[])entry.Properties["objectSid"].Value, 0);
string sidValue = sid.ToString();

/* sidValue = "S-1-5-21-XXXX-XXXX-XXXX"  */
Run Code Online (Sandbox Code Playgroud)

sidValue这种情况下是相同的,只是它不包含主体YY.

我的问题是双重的

  1. 是否需要本人才能唯一地识别个人?
  2. 是否可以从DirectoryEntry对象(或通过任何其他可用的类System.DirectoryServices)获取主体?

编辑:

做了一些进一步的阅读({1} {2})后,我现在知道如果用户从一个组/域移动到另一个组/域,sid可能会改变.鉴于此,将使用中GUID定义DirectoryEntry Properties["objectGUID"]的更好的选择来唯一识别用户?

c# asp.net asp.net-membership sid active-directory

5
推荐指数
1
解决办法
3402
查看次数

rails:控制器中包含的模块的方法在视图中不可用

奇怪的是 - 我有这样的身份验证模块lib/:

module Authentication
  protected

  def current_user
    User.find(1)
  end

end
Run Code Online (Sandbox Code Playgroud)

在ApplicationController中,我包含了这个模块和所有帮助程序,但方法current_user在控制器中可用,但不在视图中:(如何使其工作?

namespaces ruby-on-rails helpers

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

您使用哪些数据挖掘工具?

除了两个着名的开源工具RapidMiner和Weka之外,还有其他好的工具(开源或商业),您可以推荐用于数据挖掘吗?

提前致谢!

open-source data-mining

6
推荐指数
2
解决办法
1302
查看次数

如何设计面向非阻塞I/O的状态机?

我正在使用Qt框架,该框架默认具有非阻塞I/O,用于开发浏览多个网页(在线商店)并在这些页面上执行不同操作的应用程序.我正在将特定网页"映射"到我用来浏览此页面的状态机.
这个状态机有这些转换;
Connect, LogIn, Query, LogOut, Disconnect
和这些国家;
Start, Connecting, Connected, LoggingIn, LoggedIn, Querying, QueryDone, LoggingOut, LoggedOut, Disconnecting, Disconnected
从*ing到*ed states(Connecting->Connected)的转换是由于LoadFinished当前请求的url被加载时从网络对象接收的异步网络事件.从*ed到*ing states(Connected->LoggingIn)的转换是由我发送的事件引起的.
我希望能够向该机器发送多个事件(命令)(如Connect,LogIn,Query("productA"),Query("productB"),LogOut,LogIn,Query("productC"),LogOut,Disconnect)立刻让它处理它们.我不想阻止等待机器完成处理我发送给它的所有事件.问题是它们必须与上述网络事件交错,通知机器有关正在下载的URL.没有交错机器无法推进其状态(并处理我的事件),因为只有在接收到网络类型的事件后才会从*ing前进到*ed.

我怎样才能实现我的设计目标?

编辑

  1. 我正在使用的状态机有自己的事件循环,并且事件没有在其中排队,因此当机器忙时,机器可能会错过它们.
  2. 网络I/O事件不直接发布到状态机和我正在使用的事件队列.它们被发布到我的代码(处理程序),我必须处理它们.我可以按照自己的意愿转发它们,但请注意不要.1.
  3. 看看我的回答这个问题,我描述了我目前的设计中的细节.问题是我是否以及如何通过制作来改进这种设计

    • 更强大
    • 更简单

c++ events qt state-machine qstatemachine

3
推荐指数
1
解决办法
3130
查看次数

在ItemsControl DataTemplate中设置Canvas属性

我正在尝试数据绑定到这个ItemsControl:

<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

通过使用它DataTemplate,我试图单独定位我的Node元素Canvas正确:

<DataTemplate DataType="{x:Type Model:EndNode}">
    <Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

但是,它没有按预期工作.我的所有节点元素都在相同位置绘制在彼此之上.有关如何实现这一目标的任何建议?

c# wpf canvas itemscontrol

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

如何将多个命名空间声明添加到XDocument?

我正在使用XDocument在已知结构中构建Xml文档.我想要构建的结构如下:

<request xmlns:ns4="http://www.example.com/a" xmlns:ns3="http://www.example.com/b" xmlns:ns2="http://www.example.com/c" >
    <requestId>d78d4056-a831-4c7d-a357-d14402f623fc</requestId>
    ....
</request>
Run Code Online (Sandbox Code Playgroud)

请注意"xmlns:nsX"属性.

我正在尝试将这些属性添加到我的"request"元素中,但没有成功.

XNamespace ns4 = XNamespace.Get("http://www.example.com/a");
XNamespace ns3 = XNamespace.Get("http://www.example.com/b");
XNamespace ns2 = XNamespace.Get("http://www.example.com/c");

XDocument doc = new XDocument(
    new XDeclaration("1.0", "utf-8", "no"),
    new XElement("request",
        new XAttribute("ns4", ns4),
        new XAttribute("ns3", ns3),
        new XAttribute("ns2", ns2),
        new XElement("requestId", Guid.NewGuid())
     )
);
Run Code Online (Sandbox Code Playgroud)

但是,这会产生以下结果:

<request ns4="http://www.example.com/a" ns3="http://www.example.com/b" ns2="http://www.example.com/c">
  <requestId>38b07cfb-5e41-4d9a-97c8-4740c0432f11</requestId>
</request>
Run Code Online (Sandbox Code Playgroud)

如何正确添加命名空间声明?

c# xml linq-to-xml

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

审计触发器中的当前事务ID

我正在考虑从审计触发器存储某种形式的事务id.解决方案似乎是使用sys.dm_tran_current_transaction,如本文后面的SQL Server触发器 - 按事务分组.

但是,我不能使用它,因为运行sql语句的用户帐户将不具有"查看服务器状态"权限并导致错误:

Msg 297, Level 16, State 1, Line 3
The user does not have permission to perform this action.

有没有人知道这个视图的替代方法,它将提供类似的事务ID或在触发器上使用"WITH EXECUTE AS"的方法,以允许从该视图中进行选择.

从我对"WITH EXECUTE AS"的尝试看来,服务器级权限似乎没有被转移,这是预期的,因为它模仿了数据库用户.

t-sql sql-server

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

巨大的C/C++项目的内存快照(Windows/Unix)

我正在尝试拍摄在Unix/Windows上运行的大型应用程序所使用的内存的快照.我的最终目标是使用一种图表来分解代码区域所使用的内存.

该程序分为大约30个不同的项目,其中大多数是静态库或动态dll.其中一些是用C语言编写的,有些是C++语言,有些则是两者的混合.总的来说,所有项目的代码大约是600,000行.

使用堆我可以尝试在所有项目中重载每个'malloc/free'和'new/delete'并以这种方式跟踪它,但对于这么大的应用程序来说这是相当令人生畏的.

此外,这也不会获取项目周围散布的所有静态全局数据.

谢谢你的帮助.

c c++ memory

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

有没有办法配置vimdiff忽略所有空格?

我正在使用vim -d file1 file2它以查看它们之间的差异.这工作正常,但我想忽略空格更改 - 它们与源代码文件无关.

Vim帮助声明以下命令将起到魔力:

set diffopt+=iwhite
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,此命令仅添加-b到diff工具命令行,并且只忽略尾随空格.diff的正确命令行键应该是-w,忽略所有空格更改.但我找不到如何直接从Vim修改diff命令行.当然我可以编译自定义差异,或用diff.sh替换差异,但这看起来有点难看:(.

有没有更好的方法来修改Vim如何与diff工具交互以显示文件差异?

vim diff vimdiff

63
推荐指数
4
解决办法
2万
查看次数

当几个条件代码块在彼此内部时,它叫什么?

我不能为我的生活记住这个词是什么.这是你什么时候?几个if/else/for/while/useds在彼此里面.

bool isTrue = true, isFalse = true, HasForgottenWord = true;

if( isTrue )
{
   if( isFalse )
   {
       if( HasForgottenWord )
       {
           Console.WriteLine("Ask on StackOverflow.com - kthx bye");
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

c#

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