[英]How can I check for authorization when using forms authentication?
我正在开发一个ASP.NET网站。 我计划使用Forms身份验证以保证身份验证/授权,但是我在授权方面面临两个问题:
我知道如何在Web配置中设置允许经过身份验证的用户访问网页(例如myPage.aspx)。 但是我不知道如何定义UserA能够访问myPage来检索他的信息,而不是UserB的信息。 我正在考虑在用户进行身份验证时生成令牌,因此我能够检查此令牌属于谁,并验证此信息是否可供他使用。 您如何看待这种方法? 表单身份验证会生成这样的令牌吗? (我在研究中找不到任何提及)。 如果没有,我是否可以调整表单身份验证机制以生成表单,还是需要自己编写所有内容?
我想访问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.