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

文章翻译 文章翻译
文章编号: 306238 - 查看本文应用于的产品
本文的发布号曾为 CHS306238
展开全部 | 关闭全部

本文内容

概要

本文介绍如何使用 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 if
End if
End 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) 文档:
基于角色的安全性
http://msdn.microsoft.com/en-us/library/52kd59t0(vs.71).aspx
下面的 IBuySpy 开发人员解决方案网站中的文档和源代码也包含有关基于角色的安全性的信息:
IBuySpy 开发人员解决方案
http://www.ibuyspy.com
有关 ASP.NET 的更多常规信息,请访问以下 MSDN 新闻组:
microsoft.public.dotnet.framework.aspnet
有关更多信息,请参考以下书籍:
Reilly, Douglas J. Designing Microsoft ASP.NET Applications. Microsoft Press, 2001。

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

属性

文章编号: 306238 - 最后修改: 2012年6月29日 - 修订: 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
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com