为什么User.IsInRole()总是在ApiController中返回false

时间:2015-03-26 07:49:22

标签: c# asp.net-mvc-4 asp.net-web-api .net-4.0

我有ASP.NET MVC4应用程序项目。我还通过创建ApiController将WebApi添加到我的项目中。情况是在Controller个后代中,两个语句都返回true,但在ApiController个后代中,第一个语句是false,但第二个语句返回true

bool booool1 = User.IsInRole("Radiolog");
bool booool2 = Roles.IsUserInRole(User.Identity.Name, "Radiolog");

这是我的web.config配置:

    <add key="enableSimpleMembership" value="false" />
    <add key="autoFormsAuthentication" value="false" />
    ...
        <roleManager cacheRolesInCookie="true" defaultProvider="CustomRoleProvider" enabled="true">
          <providers>
            <clear />
            <add name="CustomRoleProvider" type="RisSystem.Services.CustomRoleProvider" />
          </providers>
        </roleManager>
        ...
        <authentication mode="Forms">
          <forms loginUrl="~/Account/Login" timeout="2880" />
        </authentication>

我还注意到在ApiController中[Authorize]运行良好但[Authorize(Roles="")]永远不会调用方法。 在ApiController方法中,我使用标准client.DefaultRequestHeaders.Authorization = new BasicAuthenticationHeaderValue(login, password);中的FormsAuthenticationController进行身份验证。

WebApi身份验证在WebApiConfig.cs函数中的Register(HttpConfiguration config)中设置:

        var authConfig = new AuthenticationConfiguration();
        authConfig.AddBasicAuthentication((userName, password) => AuthenticationService.ValidateUser(userName, password));
        config.MessageHandlers.Add(new AuthenticationHandler(authConfig));

0 个答案:

没有答案