0

我使用此登录操作:

    // 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")]
4

3 回答 3

1

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

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

于 2013-07-26T15:00:05.930 回答
1

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

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

string[] roles = { "Admin", "role2", "role3" };
var principal = new GenericPrincipal(httpContext.User.Identity, roles);
System.Threading.Thread.CurrentPrincipal = principal;
于 2015-05-22T09:56:16.183 回答
0

是的,您可以使用

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

ETC

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

于 2013-07-26T14:43:50.770 回答