2012-11-22 40 views
0

有沒有一種方法可以將驗證和安全屬性放入內層?
我想把安全舉例放在API層。
api層只是控制器的注入類。授權屬性+內部類庫的驗證屬性

控制器調用API。

api.Join(user); 

class UserApi{ 
    //I want the attribute on a class library. 
    [Authorized(Role....)] 
    public void Join(User user){} 
} 

感謝

+0

你可以做一個API層調用者類,它可以根據方法屬性檢查安全性,然後在一切正常的情況下執行方法。無論如何,MVC中都使用了類似的方法。 –

+0

@RobertKoritnik,我不理解你,你能解釋一下更深一點嗎?也許發送一個例子?謝謝 – SexyMF

+0

使用Net Reflector,ILSpy或類似的工具檢查System.Web.Mvc.ControllerActionInvoker類所做的工作。檢查它如何調用控制器操作。 –

回答

0

你會想看看Aspect Oriented Programming,對於.NET many人建議使用PostSharp

+0

我想過,但我認爲這確實是一個矯枉過正的問題。 .NET不支持那個框? – SexyMF

+1

@SexyMF:好吧,你正在嘗試做一些Asp.net MVC沒有提供的東西......授權過濾器是在控制器動作上提供的,而不是在外部類上提供的。 –

1

在類庫可以使用PrincipalPermissionAttribute

[PrincipalPermission(SecurityAction.Demand, Role = "...")] 
public void Join(User user){} 
+0

謝謝,我要試一下,驗證屬性呢? – SexyMF

+0

驗證屬性會在你的'User'類中嗎?如果您的控制器操作將使用該參數作爲參數,則屬性將由MVC自動驗證。 –

+0

@Joe:但是,這不會僅用於Windows身份驗證,因此表單身份驗證不會在此處將其切斷?因爲這個屬性檢查'Thread.CurrentPrincipal'而不是''HttpContext.User' ... –