這主要是一個理論問題,例如,如果我想創建自己的表單身份驗證替代方案。如何在ASP.NET中設置Page.User屬性?
1
A
回答
1
你需要編寫自己的認證模塊 - 看到這個excellent article解釋如何編寫ASP.NET認證模塊,支持基本&摘要式身份驗證。
如果您只考慮表單身份驗證方案,那麼您確實不需要編寫一個表單驗證方案。內置的Forms Authenticate模塊具有很強的可擴展性(並提供了很大的靈活性)。
0
一些谷歌搜索後,我發現this blogpost。它很好地描述瞭如何去做。基本上你需要創建一個自定義HTTP模塊並處理HttpApplication
對象的OnAuthenticateRequest
事件。
2
Page.User
剛剛返回Page.Context.User
,應通過模塊或global.asax
將其設置在HttpApplication.AuthenticateRequest
的處理程序中。您可以提供IPrincipal
的自定義實現,然後可以返回IIdentity
的自定義實現。
例如:
public class App : HttpApplication
{
public App()
{
AuthenticateRequest += App_AuthenticateRequest;
}
void App_AuthenticateRequest(object sender, EventArgs e)
{
var cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie == null) return;
var userData = GetUserData(cookie.Value);
var userIdentity = new MyIdentity(userData);
Context.User = new MyPrincipal(userIdentity);
}
private string GetUserData(string value)
{
try
{
var ticket = FormsAuthentication.Decrypt(value);
return ticket == null ? null : ticket.UserData;
}
catch (ArgumentException)
{
Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
return null;
}
}
}
相關問題
- 1. 如何在asp.net中設置contol屬性
- 2. 設置在ASP.Net MVC3屬性
- 3. 寫屬性設置在asp.net
- 4. 如何從serverside asp.net設置css屬性?
- 5. 在Asp.Net中獲取設置屬性
- 6. 是否可以在ASP.Net屬性中設置所需的屬性?
- 7. 我如何設置onmouse在asp.net中dropdownlist上的屬性
- 8. 如何在ASP.NET中設置usercontrol屬性的值?
- 9. 如何在ASP.Net中設置html表格的寬度屬性MVC5
- 10. 如何在Swift中設置UIWindow屬性
- 11. 如何在OnActionExecuting中設置Cancel屬性
- 12. 如何在aspx中設置contentEditable屬性?
- 13. 如何在JavaScript中設置marginLeft屬性?
- 14. 如何在UITableViewCell中設置UIImageView.image屬性
- 15. 如何在string.xml中設置屬性?
- 16. 如何在__init__中設置python屬性
- 17. 如何在vb.net中設置類屬性?
- 18. 如何在javacode中設置MarginTop屬性?
- 19. 如何在Wix中設置屬性
- 20. 如何在Python類中設置屬性
- 21. 如何在ItemTemplate中設置Visible屬性?
- 22. 如何在listFragment中設置divider屬性?
- 23. 如何在Slim 3中設置屬性
- 24. 如何在UITableView中設置Section屬性?
- 25. 如何以編程方式在Java中設置屬性屬性?
- 26. 如何在NHibernate中設置屬性的屬性
- 27. 如何在XML屬性值中設置屬性
- 28. 如何創建產品屬性和屬性在magento中設置?
- 29. 如何設置disableUISecurity屬性
- 30. 如何使屬性設置
我認爲表單身份驗證很容易擴展以滿足最奢侈的需求。爲什麼你想使用你的自定義模塊? – Zruty