【问题标题】:WEB API Forms Authentication - Where can i set Roles for a UserWEB API 表单身份验证 - 我在哪里可以为用户设置角色
【发布时间】:2015-07-17 19:31:44
【问题描述】:

我使用这个登录操作:

    // POST api/login
    public bool Post(LoginModel model)
    {
        if (model.Username == "user" && model.Password == "password")
        {
            var princ = new GenericPrincipal(new GenericIdentity(model.Username), null);

            FormsAuthentication.SetAuthCookie(model.Username,false);
            return true;
        }
        else
        {
            return false;
        }
    }

我已经为表单设置了身份验证。到目前为止一切正常,除了我不知道如何为当前经过身份验证的用户设置角色,所以我可以使用这个属性:

[Authorize (Roles = "Admin")]

【问题讨论】:

    标签: c# authentication asp.net-web-api


    【解决方案1】:

    在 Visual Studio 中单击Project 菜单并选择ASP.NET Configuration。这将启动 ASP.NET 网站管理工具。您可以在此处添加/编辑用户及其安全角色。

    如果您在“安全”选项卡上看到错误消息,那么您可能需要进行一些额外的配置。这是一个方便的演练:http://msdn.microsoft.com/en-us/library/879kf95c(v=vs.100).aspx

    【讨论】:

      【解决方案2】:

      如果您已经实现 RoleProvider,则无需担心将角色设置为主体。

      其他选项是将角色直接传递给通用主体。

      string[] roles = { "Admin", "role2", "role3" };
      var principal = new GenericPrincipal(httpContext.User.Identity, roles);
      System.Threading.Thread.CurrentPrincipal = principal;
      

      【讨论】:

        【解决方案3】:

        是的,你可以使用

        [Authorize(Roles="manager, admin")]
        

        更多详情请参考http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api

        【讨论】:

        • 我知道我可以做到,但我不知道在哪里可以设置用户的角色。
        • 启动上面 Jeremiah 提到的 ASP.NET 网站管理工具。您将能够看到当前用户等。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-09
        • 1970-01-01
        相关资源
        最近更新 更多