gpt4 book ai didi

c# - 如何刷新 AzMan 访问检查缓存?

转载 作者:行者123 更新时间:2023-11-30 18:10:39 25 4
gpt4 key购买 nike

我已经创建了一个使用 Microsoft AzMan 的 Web 应用程序,它可以正常工作,直到您有多个用户。我几乎 100% 确定 AzMan 正在为多个用户缓存相同的内容。

为了稍微简化一下,我看到的问题是用户 A 访问该站点并拥有完全访问权限,该用户被授予正确的访问权限并且可以正常工作。然后用户 B 访问该站点,只有查看权限,但由于 AzMan 已经看到用户 A 的完全访问权限,因此它也授予用户 B 完全访问权限。

我在创建客户端上下文时使用 AddStringSids 方法,因为它是适用于所有情况的唯一方法。这有问题吗?当我们从 token 创建客户端上下文时,我们过去不会遇到这个问题。

以下是我用来创建上下文的确切代码。 app 是一个 IAzApplication2 变量,ClientContext.SID 是相关用户的 SecurityIdentifier。

IAzClientContext2 cctx = app.InitializeClientContext2("AppNameHere", null);
cctx.AddStringSids(new object[] { (object)ClientContext.SID.ToString() } as object);

编辑:我根本没有使用 ASP.Net 角色提供程序,因为这需要应用程序了解角色。我只使用 COM API。

编辑 2:此外,如果用户 B 先登录,则用户 A 在登录时没有访问权限。因此,它不仅仅是保持最高级别的访问权限。

最佳答案

我考虑过删除这个问题,但我认为最好把它留在这里,这样可能会帮助其他人解决一个愚蠢的错误。 AzMan 不会缓存多个用户的访问检查结果。 AddStringSids 方法不是问题。问题出在我的代码中。

我有一个静态变量,它保存对客户端上下文的引用,并且只在应用程序的生命周期内创建一次,而不是在用户请求的生命周期内创建一次。这个静态变量是导致它接受第一人称访问的原因。

所以这是一个愚蠢的程序员错误,或者如我老板所说的 SBCK(椅子和键盘之间短路)。因此,如果您在 ASP.Net 中遇到类似问题,请检查您的变量并确保您没有静态变量问题。

关于c# - 如何刷新 AzMan 访问检查缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1178874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com