BasicAuthentication没有在Auth.cs中调用我的OnActionExecuting - 我可能错过了什么?

时间:2012-06-22 15:42:09

标签: asp.net asp.net-mvc asp.net-web-api

我的控制器装饰有:[BasicAuthentication] - 但是,放入断点并逐步执行代码,[BasicAuthentication]永远不会重定向到Auth.cs(在Filter文件夹中):

过滤\ Auth.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Principal;
using System.Text;
using System.Threading;
using System.Web;
using System.Web.Security;

namespace ebapi.Filter
{
    public class BasicAuthenticationAttribute : System.Web.Http.Filters.ActionFilterAttribute
    {
        public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
        {

因此覆盖OnActionExecuting永远不会执行 - 但我看不出我错过了什么。用[BasicAuthentication]修饰的我的控制器如下所示,但不调用我上面显示的Auth.cs:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using ebapi.Filter;
using ebapi.Models;

namespace ebapi.Controllers
{
    public class GetBookingsController : ApiController
     {
        private GetBookingsContext db = new GetBookingsContext();
        private ApiMembersContext dba = new ApiMembersContext();

        // GET api/GetBookings/5
        [BasicAuthentication]
        public IEnumerable<GetBooking> GetBooking(long id)
        {

感谢您的帮助,

标记

1 个答案:

答案 0 :(得分:0)

如果这有帮助,我改变了

public class BasicAuthenticationAttribute name to: public class BasicAuthenticationV2Attribute 

并将装饰改为:

[BasicAuthenticationV2]

无论出于何种原因,这再次启动了身份验证,并且没有任何问题。

我假设存在某种缓存,可能是从调用IP到API - 这意味着它会记住它已经过身份验证的某个人,并且不需要再次进行?

如果有人能证实我的想法,我会很感激。

谢谢,

标记