我在自定义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.
我的问题是双重的
System.DirectoryServices)获取主体?编辑:
做了一些进一步的阅读({1} {2})后,我现在知道如果用户从一个组/域移动到另一个组/域,sid可能会改变.鉴于此,将使用中GUID定义DirectoryEntry Properties["objectGUID"]的更好的选择来唯一识别用户?
奇怪的是 - 我有这样的身份验证模块lib/:
module Authentication
protected
def current_user
User.find(1)
end
end
Run Code Online (Sandbox Code Playgroud)
在ApplicationController中,我包含了这个模块和所有帮助程序,但方法current_user在控制器中可用,但不在视图中:(如何使其工作?
除了两个着名的开源工具RapidMiner和Weka之外,还有其他好的工具(开源或商业),您可以推荐用于数据挖掘吗?
提前致谢!
我正在使用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.
我怎样才能实现我的设计目标?
编辑
看看我的回答这个问题,我描述了我目前的设计中的细节.问题是我是否以及如何通过制作来改进这种设计
我正在尝试数据绑定到这个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)
但是,它没有按预期工作.我的所有节点元素都在相同位置绘制在彼此之上.有关如何实现这一目标的任何建议?
我正在使用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)
如何正确添加命名空间声明?
我正在考虑从审计触发器存储某种形式的事务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"的尝试看来,服务器级权限似乎没有被转移,这是预期的,因为它模仿了数据库用户.
我正在尝试拍摄在Unix/Windows上运行的大型应用程序所使用的内存的快照.我的最终目标是使用一种图表来分解代码区域所使用的内存.
该程序分为大约30个不同的项目,其中大多数是静态库或动态dll.其中一些是用C语言编写的,有些是C++语言,有些则是两者的混合.总的来说,所有项目的代码大约是600,000行.
使用堆我可以尝试在所有项目中重载每个'malloc/free'和'new/delete'并以这种方式跟踪它,但对于这么大的应用程序来说这是相当令人生畏的.
此外,这也不会获取项目周围散布的所有静态全局数据.
谢谢你的帮助.
我正在使用vim -d file1 file2它以查看它们之间的差异.这工作正常,但我想忽略空格更改 - 它们与源代码文件无关.
Vim帮助声明以下命令将起到魔力:
set diffopt+=iwhite
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,此命令仅添加-b到diff工具命令行,并且只忽略尾随空格.diff的正确命令行键应该是-w,忽略所有空格更改.但我找不到如何直接从Vim修改diff命令行.当然我可以编译自定义差异,或用diff.sh替换差异,但这看起来有点难看:(.
有没有更好的方法来修改Vim如何与diff工具交互以显示文件差异?
我不能为我的生活记住这个词是什么.这是你什么时候?几个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# ×4
c++ ×2
asp.net ×1
c ×1
canvas ×1
data-mining ×1
diff ×1
events ×1
helpers ×1
itemscontrol ×1
linq-to-xml ×1
memory ×1
namespaces ×1
open-source ×1
qt ×1
sid ×1
sql-server ×1
t-sql ×1
vim ×1
vimdiff ×1
wpf ×1
xml ×1