C# 替换ASP.NET中的defaut身份验证模块
假设我编写了自己的身份验证模块,实现了C# 替换ASP.NET中的defaut身份验证模块,c#,.net,asp.net,asp.net-mvc,httpmodule,C#,.net,Asp.net,Asp.net Mvc,Httpmodule,假设我编写了自己的身份验证模块,实现了IHttpModule。这不是真的做,但有很好的资源,所以我可以找出它 还有一些教程介绍如何将自定义创建的模块添加到Web.config。但是如何替换一些默认模块呢?这就是如何从执行路径中删除默认身份验证模块的方法 我可以从Web.config中删除以下行吗 <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> <
IHttpModule
。这不是真的做,但有很好的资源,所以我可以找出它
还有一些教程介绍如何将自定义创建的模块添加到Web.config
。但是如何替换一些默认模块呢?这就是如何从执行路径中删除默认身份验证模块的方法
我可以从Web.config
中删除以下行吗
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
如果我删除它们,默认的身份验证模块还会工作吗
当然,即使我不使用这个模块,也没有必要删除它。。。但这会节省一些处理器时间,我会感觉更好
这很容易,但不是困难的部分:我可以替换HttpContext
实现吗?我有自己的会话类,名为session
,我不希望HttpSessionState
处于HttpContext
中。我还想替换HttpContext
的User
属性。所以我想我需要创建自己的HttpContext
实现,并强制我的应用程序以某种方式使用它。
我该怎么做
请随意回答我问题的任何部分或全部,如您喜欢。您可以将
模式设置为无
。我会给你的HttpContext
起个不同的名字。
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
<remove name="UrlAuthorization" />
<remove name="DefaultAuthentication" />
</modules>
</system.webServer>
这样如何?您通过替换身份验证、会话等解决的真正问题是什么?现有ASP.NET运行时有哪些限制?也许你可以看看ASP.NET以外的东西?为什么不编写你自己的自定义MemebershipProvider
?@Sanjeevakumar Hiremat:没有真正的限制。。。我只是不喜欢默认的会员制——它迫使我存储密码、安全问题和其他一些我认为不需要的东西(我使用的是OpenID身份验证)。因此,我的数据模型感觉不自然。此外,它还将会话视为在浏览器打开时持续的内容。。。我想保留它,直到他们记录(像这样)。最后,我想为一个用户提供更多的会话。考虑到所有这些,我决定编写自己的会话系统会更清晰、更容易,而不是尝试调整existing@Daniel怀特:请阅读我之前的评论——我希望它也能回答你的问题。你所说的“我会给你的HttpContext起个不同的名字”是什么意思?@Dastro你可以叫它CustomHttpContext
对不起,我还是不明白。所以我创建了一个新类CustomHttpContext
继承自HttpContext
?然后呢?我如何使用它来代替默认的HttpContext
?嗯,现在我意识到可能很难知道它是否有效(没有使用模块)您确定这会有效吗?或者您可以建议一种方法来检查它吗?是否真的可以这样删除DefaultAuthentication
模块?我尝试过,但这会在applicationHost.config中产生一条错误消息,我认为lockItem=“true”。