【发布时间】:2016-11-16 06:25:13
【问题描述】:
如何在不使用任何登录的情况下使用安全令牌保护 WEB API。我们想在 Windows 服务中使用这个 WEB API 从其他数据库服务器获取数据。不能使用用户登录名或角色 我们尝试[Authorize] 属性,但都是徒劳的。 我试试这个
[MyAuthorize]
public class MasterDataController : ApiController
{
[HttpGet]
public string myMethod(string Name)
{
return Name;
}
}
我的授权是
public class MyAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext Context)
{
//Some logic to validate token...
}
}
WebApiConfig.cs 是
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new AuthorizeAttribute());
config.Routes.MapHttpRoute(
name: "ActionGetPatientAndAppointmentInfo",
routeTemplate: "TestAPI/{controller}/{action}",
defaults: new
{
controller = "MasterData",
action = "myMethod"
}
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional}
);
}
}
当我们在带有授权标头的 REST 客户端中测试方法时
但 OnAuthorization 方法本身并未执行。 响应总是显示未经授权的请求。
【问题讨论】:
标签: asp.net-web-api windows-services authorization token