我们有一个swf文件,我们想要保护并仅供授权用户使用.
我将文件嵌入到aspx页面中并且工作正常,因为ASP.NET处理aspx页面,我可以使用ASP.NET授权功能,并且在web.config中限制对roles ="AllowedUsers"的访问.
然而,智能用户仍然可以直接访问该文件,例如www.mysite/flash.swf.我们希望这种访问安全.
任何帮助将不胜感激!
谢谢!
我有一个使用Windows身份验证的ASP.NET 3.5应用程序并实现我们自己的RoleProvider.
问题是我们想要将对一组页面的访问限制为几千个用户,而不是逐个输入所有这些页面,我们发现它们属于一个AD组.
答案很简单,如果我们检查特定用户的成员资格的公共组是它的直接成员,但我遇到的问题是,如果该组是另一个组的成员,然后是另一个组的成员,那么我的代码总是返回false.
例如:假设我们要检查User是否是E组的成员,但是User不是*E"的直接成员,她是"A"的成员,其中"B"的成员确实是其成员E,因此用户是*E的成员
我们的解决方案之一非常缓慢,尽管它给出了正确的答案
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var group = GroupPrincipal.FindByIdentity(context, IdentityType.Name, "DL-COOL-USERS"))
{
var users = group.GetMembers(true); // recursively enumerate
return users.Any(a => a.Name == "userName");
}
}
Run Code Online (Sandbox Code Playgroud)
原始解决方案以及我尝试使用.NET 3.5 System.DirectoryServices.AccountManagement工作,当用户是相关组的直接成员时,它确实有效,如下所示:
public bool IsUserInGroup(string userName, string groupName)
{
var cxt = new PrincipalContext(ContextType.Domain, "DOMAIN");
var user = UserPrincipal.FindByIdentity(cxt, IdentityType.SamAccountName, userName);
if (user == null)
{
return false;
}
var group = GroupPrincipal.FindByIdentity(cxt, …Run Code Online (Sandbox Code Playgroud)