2011-03-12 23 views
0

假设我已经编写了自己的认证模块,实现IHttpModule。这不是真的做到了,但有很好的资源,所以我可以弄明白。替换ASP.NET中的defaut认证模块

还有关于如何将自定义创建的模块添加到Web.config的教程。但我怎么能取代一些默认模块?那我如何从执行路径中删除默认验证模块?

我可以从Web.config中删除以下几行吗?

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880"/> 
</authentication> 

如果我删除他们将默认身份验证模块仍然工作?

因为即使我不使用它,也不需要删除该模块......但它会节省一些处理器时间,我会感觉更好。

这很容易,而不是难的部分:我可以取代HttpContext执行?我有我自己的会话类Session,我不希望HttpSessionStateHttpContext。我也想替换HttpContextUser财产。所以我想我需要创建自己的实现HttpContext并强制我的应用程序以某种方式使用它。 我该怎么做?

请随时根据自己的意愿自行回答我的问题的任何部分或所有问题。

+5

通过替换身份验证,会话等解决您的真正问题是什么?现有的ASP.NET运行时有哪些限制?也许你可以看看ASP.NET以外的其他东西? – 2011-03-13 01:01:21

+0

为什么不写你自己定制的'MemebershipProvider'? – 2011-03-13 01:01:24

+0

@Sanjeevakumar Hiremat:没有真正的限制......我只是不喜欢默认的会员系统 - 它迫使我存储密码,安全问题和其他一些人认为我不需要(我使用OpenID身份验证) 。所以对我的数据模型来说感觉不太自然。它也将会话视为持续打开浏览器的事件......我想保留它,直到它们记录为止(如SO)。最后,我想让一个用户有更多的会话可能。考虑到所有这些,我决定编写我自己的会话系统会更加清晰和容易,而不是尝试调整现有的 – drasto 2011-03-14 15:24:58

回答

0

您可以将mode设置为None。我会命名你的HttpContext不同的东西。

+0

你的意思是“我会为你的HttpContext命名不同的东西”? – drasto 2011-03-13 23:01:44

+0

@Dastro你可以称它为'CustomHttpContext' – 2011-03-14 01:06:18

+0

我很抱歉,但我仍然不明白。所以我创建了一个从'HttpContext'继承的新类'CustomHttpContext'?而不是什么?我该如何使用它来代替默认的'HttpContext'? – drasto 2011-03-14 15:37:17

2
<system.webServer> 
<modules> 
    <remove name="FormsAuthenticationModule" />  
    <remove name="UrlAuthorization" />  
    <remove name="DefaultAuthentication" />  
</modules> 
</system.webServer> 

这个怎么样?

+0

嗯,现在我意识到它可能很难知道它的工作原理(模块不使用)你确定这会工作,或者你可以建议一种方法来检查它吗? – drasto 2011-03-13 23:04:14

+0

真的有可能以这种方式移除'DefaultAuthentication'模块吗?我试过,这产生了一个错误消息http://stackoverflow.com/q/17565717/57428 – sharptooth 2013-10-15 08:48:36

+0

我认为lockItem =“true”在applicationHost.config中。 – takepara 2013-10-17 01:59:25