繁体   English   中英

使用表单身份验证时如何检查授权?

[英]How can I check for authorization when using forms authentication?

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

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

  2. 我想访问Web服务,并且只有在用户登录后,这些服务才应该返回信息。 因此,我想使用上面说明的相同令牌。 你怎么看待这件事? 这是一个好方法吗?

我之所以这样问是因为我没有设计认证/授权机制的经验,任何帮助/提示都将不胜感激。

关于问题一,在ASP.Net Web表单应用程序中进行表单身份验证后,用户的身份作为Pages.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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM