【问题标题】:Windows Authentication for Web Form ButtonWeb 窗体按钮的 Windows 身份验证
【发布时间】:2015-01-27 15:22:35
【问题描述】:

我需要做的是允许或拒绝用户访问我的 asp web 表单上的特定按钮控件。我想做的是基于他们的 Windows 凭据,这样就没有必要使用登录页面。公司中只有少数人应该有权访问此控件,因为它会清除保存库存结果并创建备份的 SQL 表。

有没有办法在加载 Default.aspx 时进行身份验证,如果通过身份验证,使 DeleteButton.Visible = true?

与此同时,我正在查看 ASP Windows 身份验证教程。大多数教程似乎都倾向于允许或拒绝对 Web 表单的访问,但应该允许其他用户访问表单(而不是删除按钮)。

【问题讨论】:

  • 应该有权访问此按钮的人会先登录吗?
  • 不,我希望不使用登录页面。相反,如果可能,请根据从已登录的 PC 获取的 Windows 凭据进行身份验证。

标签: c# asp.net webforms windows-authentication


【解决方案1】:

可以试试这样的:

DeleteButton.Visible = User.Identity.IsAuthenticated && 
                       User.IsInRole("AllowedToPressButton");

由于您没有这样的登录逻辑(因为 Windows 已经完成了身份验证),您需要处理“AllowedToPressButton”组中的特定用户。

要使上面的示例正常工作,请尝试以下操作:

web.config

<system.web>
    <roleManager enabled="true" />
</system.web>

global.asax

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    If (Roles.RoleExists("AllowedToPressButton") = False) Then
        Roles.CreateRole("AllowedToPressButton")
        Roles.AddUserToRole("DOMAIN\User", "AllowedToPressButton")
    End If
End Sub

这是实现解决方案的一种非常简单的方法,它紧密地绑定了用户/角色分配。 ASP.NET 中的角色管理可以通过多种方式实现,例如 SQL 或 Windows(以及更多)。

这里有几篇关于使用自定义角色和 Windows 身份验证的好文章

【讨论】:

  • 是的,所以这基本上是我想要做的,但登录逻辑是问题出现的地方。唯一发生的登录是用户登录到他们的计算机时。是否可以这样做: 在 web.config 中?然后根据 web.config 中允许的用户,进行身份验证并使按钮可见?
  • 检查我的编辑。我刚刚阅读了 Scott Guthrie 关于此的文章,看起来这可能就是您正在寻找的内容
  • 感谢您的链接。我要看看这个。
  • 我已经编辑了我的答案,包括如何使“登录”逻辑部分工作。
  • 别担心,很高兴得到一些帮助!如果您认为合适,可以标记为答案。干杯:)
猜你喜欢
  • 1970-01-01
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2023-04-10
  • 2015-09-04
  • 2013-04-09
相关资源
最近更新 更多