我使用此登录操作:
// 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")]
答案 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更多详情