2011-04-03 58 views
0

我有我的网站设置了2个不同的角色,然后当然是匿名的。 我有超链接让登录用户访问他们的帐户页面,但我希望每个角色都有相同的超链接。例ASP.NET C#超链接取决于角色

如果角色是管理我想要的链接“我的账户”去管理/ myaccount.aspx 如果角色是卖家我想链接“我的账户”转到卖方/ myaccount.aspx

我已经使用了一个链接按钮,并计划添加ifs到C#但我不确定如何根据角色做出一个任何想法?

马克

+1

我建议不要使用这种构造。例如,当用户获得新角色时,他依靠书签时可能看不到新帐户部分。你确定这是你想要的吗?为什么不为所有用户(/帐户)使用相同的URL,并让页面根据用户所处的角色自行定制?然后,您可以使用@Pepto下面的答案来自定义页面(显示或隐藏控件) – 2011-04-03 11:54:19

回答

0

假设窗体身份验证 - 在IsInRole

System.Security.Principal.IPrincipal _user = System.Threading.Thread.CurrentPrincipal; 
      if (_user.IsInRole("admin")) 
      { 
       //Set link to admin link 
      } 
      else 
      { 
       //Set to other link 
      } 

更多信息:在ASP.NET http://msdn.microsoft.com/en-us/library/system.security.principal.iprincipal.isinrole.aspx

+0

嗨,Pepto感谢您的帮助。我已经插入了你添加的代码,但目前我有一个管理员用户,但它不适用于他们,只是使用else语句,我假设我必须在它之前添加一些东西,但不确定有什么想法? – Mark 2011-04-03 18:21:39

+0

用于角色名称的字符串名称与您正在查找的内容完全匹配非常重要。如果使用表单身份验证,则通常由您自己的自定义角色提供程序分配。如果使用基于Window的身份验证,它通常以“BUILTIN \”开头。恐怕没有足够的空间来完全覆盖在校长上创建角色。请查看http://msdn.microsoft.com/en-us/library/wefzhcez(v=VS.71).aspx,以便在此主题上取得良好的开端 – Pepto 2011-04-04 08:18:03

0

两种方法,使用HyperLink控制:

  1. 使用两HyperLink具有相同标题的控件“My Acco不“,但具有不同的NavigateUrl属性。检查用户的角色并在Page_Load功能中动态设置正确的链接visible
  2. 使用一个HyperLink控件,标题为“我的帐户”,并在Page_Load函数中设置正确的NavigateUrl属性。