0

我正在开发一个 ASP.NET 网站。我计划使用 Forms 身份验证来保证身份验证/授权,但我在授权方面面临两个问题:

  1. 我知道如何在网络配置中设置允许经过身份验证的用户访问网页(比如 myPage.aspx)。但我不知道如何定义 UserA 能够访问 myPage 以检索他的信息,而不是 UserB 的信息。我正在考虑在用户进行身份验证时生成一个令牌,因此我能够检查此令牌属于谁并验证此信息是否可供他使用。您如何看待这种方法?表单身份验证会生成这样的令牌吗?(我在我的研究中找不到任何关于它的提及)。如果没有,我是否可以调整表单身份验证机制以生成或者我需要自己编写所有内容?

  2. 我想访问网络服务,这些应该只在用户登录时返回信息。出于这个原因,我想使用上面解释的相同标记。你怎么看待这件事?这是一个好方法吗?

我问这个是因为我没有设计身份验证/授权机制的经验,任何帮助/提示将不胜感激。

4

1 回答 1

1

关于问题一,在 ASP.Net Web 表单应用程序中进行表单身份验证后,用户的身份将作为Page.User.Identity属性中的FormsIdentity对象公开。此对象有一个 Name 属性,其中包含用户用于登录您的站点的用户名。您可以使用此值来限制用户可以访问的内容。例如,假设您的数据库中有一个表,其中包含包含以下字段的用户信息:

userId int
userName varchar(25)
...more fields containing user information...

您可以限制用户仅访问此表中 userName 等于 Page.User.Identity.Name 属性的行中的信息,如果您使用直接 ADO.Net 或通过查询 ORM 映射 (即 nHibernate 或 EF) 域对象。

关于问题二,Page.User.Identity 公开的 FormsIdentity 对象有一个布尔值“IsAuthenticated”属性。您可以使用它来限制对 Web 服务的访问,如下所示:

if(Page.User.Identity.IsAuthenticated)
{
     //Call your web service in a secure manner
}
于 2012-01-24T20:30:52.537 回答