【问题标题】:asp.net, roles not getting assigned through forms authenticationasp.net,未通过表单身份验证分配角色
【发布时间】:2011-08-19 03:20:07
【问题描述】:

又是在 asp.net 中遇到有关角色问题的一天。所以我目前正在尝试为我的网站设置角色。我使用这段代码来制作 formsAuthentication 票。

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");

您可以看到我正在向此人添加角色“管理员”。页。是一个对象,名字是一个字符串。在下一段代码中,我检查该人在进入管理站点时是否获得了管理员角色。如果他不是管理员,他必须被退回。

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

奇怪的是它让我回到默认页面?有人知道答案吗?

PS。我知道您必须在 web.config 文件的不同位置设置授权。但如果他连这个角色都没有得到,那也无所谓了。

【问题讨论】:

    标签: asp.net forms roles


    【解决方案1】:

    我不确定您能否让角色以这种方式工作。它的设计工作方式是通过角色管理器。详情请见this article

    您可能需要查看cacheRolesInCookie 设置。如果禁用,您可以确保默认表单身份验证内容不会从身份验证 cookie 重新加载角色。

    【讨论】:

    • 我点击了链接。不知道有配置管理器。所以我添加了我需要的角色。但它仍然没有工作。然后我将此添加到我的登录 Roles.AddUserToRole(p.firstName, p.userRole); - 效果很好。所以他们现在实际上得到了角色。为什么我不知道首先将它们添加到票证中不起作用。此外,HttpContext.Current.User.IsInRole 和 User.IsInRole 之间似乎存在差异。
    • 哦,谢谢你的 cacheRolesInCookie 我认为它也有很大帮助:)
    • 顺便说一句。它们在配置管理器中进行的更改,它们最终会在哪里?它似乎没有对配置文件做任何事情。
    • 如果您使用开箱即用的 asp.net 用户管理(如文章中所建议的那样),您的设置可能存储在 ~/App_data 的用户实例数据库中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多