В настоящее время я делаю это в производственной среде. В моем случае решение было несложным, так как MADAM уже был установлен, чтобы разрешить обычным RSS-ридерам безопасный доступ к RSS-каналам на сайте.
Хитрость в том, чтобы включить обычную аутентификацию для страниц, которые вы хотите вызывать автоматически, используя любые внешние процессы, что открывает вам огромное количество способов автоматического доступа к сайту; этот файл VBScript, например, вызывает URL-адрес обслуживания и проверяет, соответствует ли ответ сервера точно SUCCESS
.
Option Explicit
Dim result
result = PerformMaintenance("http://www.mysite.com/MyController/RunCleanupScript")
WScript.Quit(result)
Function PerformMaintenance(URL)
Dim objRequest
Set objRequest = CreateObject("Microsoft.XmlHttp")
'I use a POST request because strictly speaking a GET shouldn't change anything on the server.
objRequest.open "POST", URL, false, "LimitedDaemonUser", "SecretDaemonPassword"
objRequest.Send
if (objRequest.ResponseText = "SUCCESS") Then
PerformMaintenance = 0
Else
PerformMaintenance = 1
End If
set objRequest = Nothing
End Function
Базовая аутентификация достаточно проста, чтобы начать работать. Просто включите MADAM в свой проект и настройте его в своем файле Web.config. .
Добавление этих разделов/параметров Web.config (IIS6) должно заставить ваш пример запроса работать, если вы используете стандартный MembershipProvider. Вам просто нужно изменить MyNamespace.MembershipUserSecurityAuthority
на ссылку на реальный класс. Исходный код для MembershipUserSecurityAuthority
включен в MADAM в папке App_Code
демонстрационного веб-приложения.
<configuration>
<configSections>
<sectionGroup name="madam">
<section name="userSecurityAuthority" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="formsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionSectionHandler, Madam" />
</sectionGroup>
</configSections>
<madam>
<userSecurityAuthority realm="MyRealm" provider="MyNamespace.MembershipUserSecurityAuthority, MyNamespace" />
<formsAuthenticationDisposition>
<discriminators all="false">
<discriminator inputExpression="Request.AppRelativeCurrentExecutionFilePath" pattern="~/MyController/RunCleanupScript$" type="Madam.RegexDiscriminator, Madam" />
</discriminators>
</formsAuthenticationDisposition>
</madam>
<system.web>
<httpModules>
<add name="FormsAuthenticationDisposition" type="Madam.FormsAuthenticationDispositionModule, Madam" />
<add name="AuthenticationModule" type="Madam.BasicAuthenticationModule, Madam" />
</httpModules>
</system.web>
</configuration>
person
Kevin Stricker
schedule
23.10.2011
isAuthenticated || isLocal
, и вызовитеRunCleanupScript
локально. - person Chase Florell   schedule 14.10.2011