WEB API表单身份验证 - 我在哪里可以为用户设置角色

时间:2013-07-26 14:38:21

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

我使用此登录操作:

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

是的,你可以使用

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

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