你目前正处于脱机状态,正在等待 Internet 重新连接

如何使用 Visual Basic .NET 在 ASP.NET 应用程序中通过基于窗体的身份验证实现基于角色的安全性

本文的发布号曾为 CHS306238
有关本文的 Microsoft Visual C# .NET 版本,请参阅 311495

本文引用下面的 Microsoft .NET Framework 类库命名空间:
  • System.Web.Security
  • System.Security.Principal

本任务的内容

概要
本文介绍如何使用 Visual Basic .NET 在实现基于窗体身份验证的 ASP.NET 应用程序中实现基于角色的安全性。

返回页首

要求

本文假定您已经在 ASP.NET 应用程序中实现了基于窗体的身份验证。有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
308157 如何使用 Visual Basic .NET 在 ASP.NET 应用程序中实现基于窗体的身份验证
返回页首

向进行身份验证的用户分配角色

由于窗体用户通常不是 Microsoft Windows 用户,因此默认情况下,窗体用户没有任何与之相关联的角色。因此,必须将进行身份验证的用户的角色附加到该用户的身份标识中,以便在代码内实现基于角色的安全性。

使用本节中的示例代码可在您的应用程序中实现基于角色的安全性。此示例代码将预先指定的角色分配给进行身份验证的用户。根据您存储用户数据的方式,您可实现自己的方法以检索通过身份验证的用户的角色,并将这些角色附加到身份验证用户的标识中,下面的代码示例显示了这一过程。

将以下代码复制到现有应用程序的 Global.asax 文件中,以将这些角色分配给 Application_AuthenticateRequest 事件处理程序中进行身份验证的用户:
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)if (not(HttpContext.Current.User is Nothing)) then    if HttpContext.Current.User.Identity.AuthenticationType = "Forms" then        Dim id as System.Web.Security.FormsIdentity        id = HttpContext.Current.User.Identity        Dim MyRoles(2) As String        MyRoles(0) = "Manager"        MyRoles(1) = "Admin"        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,MyRoles)     End ifEnd ifEnd sub				
返回页首

在 ASPX 页中检查用户角色并实现程序逻辑

下面的步骤演示了如何基于进行身份验证的用户所属的角色实现和控制程序逻辑。
  1. 创建一个名为 Sample.aspx 的新 .aspx 页,然后粘贴以下代码:
    <%@ Page Language="VB" %><%@ Import Namespace="System.Web" %>  <script runat=server>    Sub Page_Load(Src As Object, E As EventArgs)	if User.IsInRole("Admin") then		Response.Write ("You are an Administrator")	Else		Response.Write ("You do not have any role assigned")	End if    End Sub  </script>					
  2. 将 Sample.aspx 保存到现有应用程序中。浏览到该页以测试它。
返回页首
参考
有关 ASP.NET 安全的概述,请参阅下面的 Microsoft 知识库文章:
306590 INFO:ASP.NET 安全性概述
有关基于角色的安全性的更多信息,请参考以下 .NET Framework 软件开发工具包 (SDK) 文档:下面的 IBuySpy 开发人员解决方案网站中的文档和源代码也包含有关基于角色的安全性的信息:
IBuySpy 开发人员解决方案
http://www.ibuyspy.com
有关 ASP.NET 的更多常规信息,请访问以下 MSDN 新闻组: 有关更多信息,请参考以下书籍:
Reilly, Douglas J.Designing Microsoft ASP.NET Applications. Microsoft Press, 2001。

Esposito、Dino。使用 ASP.NET 和 ADO.NET 构建 Web 解决方案. Microsoft Press, 2001。
Microsoft 提供了第三方联系信息以便于您寻求技术支持。这些联系信息如有更改,恕不另行通知。Microsoft 不保证这些第三方联系信息的准确性。

返回页首
属性

文章 ID:306238 - 上次审阅时间:06/29/2012 06:30:00 - 修订版本: 4.0

  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual .NET 2002 标准版
  • kbproductlink kbhowtomaster kbsecurity KB306238
反馈