2016-04-29 47 views
-1

我有一個帶有用戶的數據庫,用戶可以有不同的角色。MVC Web API自定義基本認證

我想爲我的MVC Web API實現基本身份驗證,我希望能夠使用Authorize標記標記方法,並通過userType作爲參數。

[Authorize(admin)] 
public bool Test() 
{ 
} 

[Authorize(user)] 
public bool Test1() 
{ 
} 

我無法弄清楚如何使這一屬性,比如我怎麼做,簡單地使一個方法總是返回false屬性?

[AttributeUsage(AttributeTargets.All)] 
public class TestAttribute: System.Attribute 
{ 
    //Return false? 
} 

我正在尋找一些建議。

編輯:

我做了以下類:

ilterContext.HttpContext.Response.StatusCode = 401; 
        filterContext.Result = new EmptyResult(); 
        filterContext.HttpContext.Response.End(); 
       } 
      } 
     } 

     private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus) 
     { 

然後我添加[BasicAuthorize]的方法,但它還是讓我訪問它沒有基本的autentication。

有什麼想法嗎?

+0

您想檢查角色,但是您的代碼會根據數據層檢查用戶名和密碼。你的角色檢查在哪裏? –

+0

我只是想讓基本認證工作,但我現在無法獲得任何代碼來運行BasicAuthorizeAttribute。 –

回答

0

我建議你閱讀一些關於授權和認證的基礎知識以及如何應用Authorize屬性。

角色開箱即用。只需使用Authorize屬性的內置功能:例如:

[Authorize(Roles="admin")] 
public bool Test() 
{ 
} 

如果你需要,你需要從System.Web.Mvc.AuthorizeAttribute而不是從System.Attribute繼承自定義實現。其他的一切都從這裏直截了當。這裏解釋的基本示例如下:Basic Authorization Attribute in ASP.NET MVC

+0

我嘗試了你的鏈接中的代碼,但仍然無效,更新了我的問題,請參閱。 –

+0

看起來你只是在不理解背後的原理的情況下複製和粘貼代碼。你有一個角色「管理員」如果沒有,這可能是我提到的虛擬示例不起作用的原因。此外,按照其預期用途使用「Roles」屬性。 –