2011-08-23 45 views
0

我用我的asp.net应用程序的Windows身份验证简单的web.config文件的问题asp.net

不同的用户将拥有该网站的部分不同的访问。

我愿做这样的事情在配置文件:

<appSettings> 
    <role1> 
<user>agordon</user><user>jsmith</user> 
    </role1> 
<role2><user>dtodd</user><user>kveel</user></role2> 
    </appSettings> 

这是可能做到?

身份验证时,那么我会得到这样的用户名:

string username = HttpContext.Current.User.Identity.Name.ToString(); 

,并检查该用户在特定角色

回答

2

使用<authorization>元素:

<configuration> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
</configuration> 

然后,您可以修改特定您的网站部分:

<location path="Pages/Administration"> 
     <system.web> 
      <authorization> 
      <deny roles="*"/> 
      <allow roles="Admin" /> 
      </authorization> 
     </system.web> 
</location> 
+0

谢谢,我在哪里指定该网站的哪些部分属于? –

+0

具有'path'属性。 –

+0

非常感谢您能帮助这个:http://serverfault.com/questions/304166/does-iis-server-have-tobe -on域换窗户,认证和角色 –

0

可以做到这一点的存在,但它确实不是最好的方法。

这里的问题是,的appSettings不由的Web.Config模式控制,所以你需要以编程方式枚举的appSettings在一个可怕的方式:

if (configurationSettings.HasKey("Role1")) { ... } 
else if (configurationSettings.HasKey("Role2")) { ... } 
else if (configurationSettings.HasKey("Role3")) { ... } 
//continue ad.nauseum; it's not fun - trust me! 

我知道这不是你问,但如果你使用普通的ASP.Net webforms,那么它有点难以理解;在每个页面/控件中,您需要找出当前用户,然后确定该用户是否有权访问然后重定向或继续。

如果您使用ASP.Net MVC,它会更清晰,因为您使用属性进行此操作。

​​

有什么代码在做,是说如果用户没有管理员角色,不要给他们访问。

为了提供一个相反的例子,这是一个使用Web表单类似的方法(MSDN例子):

http://support.microsoft.com/kb/311495

+0

非常感谢。能够做角色,我将不得不通过疯狂的箍来让它工作? –

+0

请解释downvote;我已经说明了OP询问的方法存在的问题,并提供了两种解决问题的方法。 –

+0

不,没有,角色身份验证是好的 - 问题是通过AppSettings。我提供的MSDN链接显示了如何执行角色身份验证,您只需制定一种存储方法,将您的访问权与所报告的角色相关联即可。 –