这主要是一个理论问题,例如,如果我想创建自己的表单身份验证替代方案。如何在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