相信這是可能的。這一直在單元測試中完成。我個人使用RhinoMocks和MVCContrib.TestHelper來調用我的控制器動作,既有身份驗證又沒有身份驗證。這裏是一個代碼示例一塊,我用它來測試我的控制器:
private MockRepository _mocks = new MockRepository();
public ControllerTestBase()
{
}
public static T GetController<T>()
{
return this.GetController<T>(null);
}
public T GetController<T>(BPUser authenticatedUser)
{
TestControllerBuilder testContBuilder = new TestControllerBuilder();
if (authenticatedUser != null)
{
var identity = _mocks.DynamicMock<IIdentity>();
SetupResult.For(identity.IsAuthenticated).Return(true);
SetupResult.For(identity.Name).Return(authenticatedUser.ID.ToString());
_mocks.Replay(identity);
var pAttrs = new System.Collections.Hashtable();
pAttrs["UserID"] = authenticatedUser.ID.ToString();
pAttrs["UserName"] = authenticatedUser.UserName;
testContBuilder.HttpContext.User = new UserPrinciple(identity, new string[] { }, pAttrs);
}
return testContBuilder.CreateController<T>();
}
書中有我的執行IPrinciple有點定製的東西,但我希望這是一個開始。
編輯 - 使用示例 這裏是你將如何使用這個:
var authenticatedUser = SomeCodeToGetMyUser();
var controller = ControllerTestBase.GetController<YourController>(authenticatedUser);
controller.UpdateHeartbeat();
所以,我會再使用基本的HTTP認證(通過HTTPS/SSL明顯),並檢查在覆蓋這些憑據' AuthorizeCore();'方法?? – Nate 2010-03-30 19:42:15
當然。你正在編寫覆蓋的邏輯,所以你可以做任何你想讓它返回true或false的東西。 – 2010-03-30 20:05:53
我知道,我想我的問題是,這樣做有什麼意義,我可能不知道?它安全嗎?假設URI是HTTPs和ssl加密的,那麼憑證是否也加密? – Nate 2010-03-30 20:11:39