2011-05-05 89 views
-1

与asp.net中的角色有关的问题。所以我目前正在尝试为我的网站设置角色。我使用这段代码来制作formsAuthentication票据。asp.net,未通过表单身份验证分配的角色

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
       1, //Ticket version 
       p.firstName, //username 
       DateTime.Now, 
       DateTime.Now.AddMinutes(30), 
       false, //true for persistant user cookie 
       "Admin", 
       FormsAuthentication.FormsCookiePath); 
      string hashCookies = FormsAuthentication.Encrypt(ticket); 
      HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies); 
      Response.Cookies.Add(cookie); 
      Response.Redirect("Default.aspx");

您可以看到我将角色“admin”添加到此人。页。是一个对象,firstname是一个字符串。在下一段代码中,我们检查了他进入管理员站点时是否具有管理员角色。如果他不是管理员,他必须退回。

if (User.IsInRole("Admin") != true) 
    { 
     Response.Redirect("Default.aspx"); 
    }

奇怪的是,它将我返回到默认页面?任何人都知道答案?

PS。我知道你必须在web.config文件的不同位置设置授权。但是,如果他甚至没有得到这个角色,那么现在并不重要。

回答

1

我不确定你能否通过这种方式获得角色。它设计的工作方式是通过角色经理。详细请参阅this article

您可能想要看的一件事是cacheRolesInCookie设置。如果禁用了该功能,则可以确保默认表单身份验证内容不会从身份验证Cookie重新加载角色。

+0

我跟着链接。不知道有一个配置管理员。所以我添加了我需要的角色。但它仍然没有工作。然后我将它添加到我的登录Roles.AddUserToRole(p.firstName,p.userRole); - 哪个工作得很好。所以他们现在真的得到了角色。为什么它不起作用,首先将它们添加到票据中,我不知道。此外,它似乎有HttpContext.Current.User.IsInRole和User.IsInRole之间的区别。 – 2011-05-05 08:34:58

+0

哦,并感谢你的cacheRolesInCookie我认为它帮助了很多以及:) – 2011-05-05 08:37:29

+0

和顺便说一句。他们在配置管理器中进行了更改,他们最终在哪里?它似乎没有对配置文件做任何事情。 – 2011-05-05 08:42:33

相关问题