我有一個控制器呈現內部Web應用程序中的頁面需要通過Windows身份驗證。有沒有第二個控制器用於基於JSON的查詢進入系統,不需要進行Windows身份驗證?那可能嗎?看來我目前只能做一個或另一個。MVC3:一個控制器是否需要Windows身份驗證,而第二個控制器允許匿名?
有什麼建議嗎?
我有一個控制器呈現內部Web應用程序中的頁面需要通過Windows身份驗證。有沒有第二個控制器用於基於JSON的查詢進入系統,不需要進行Windows身份驗證?那可能嗎?看來我目前只能做一個或另一個。MVC3:一個控制器是否需要Windows身份驗證,而第二個控制器允許匿名?
有什麼建議嗎?
是一個簡單的賬戶控制器AuthorizeAttribute
因此,例如,處理這個問題。根據您選擇什麼樣的認證,你Authorize
本文給出確切裝點您的控制器的操作方法你在找什麼: http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-cs
從文章「例如,家庭控制器列表中1公開了三個名爲Index(),CompanySecrets()和StephenSecrets()的動作,任何人都可以調用Index()動作,但只有Windows本地Managers組的成員纔可以調用CompanySecrets()動作。域名用戶Stephen(在Redmond域中)可以調用StephenSecrets()動作。「
是的,你可以在你只需要授權用戶訪問操作ChangePassword
[Authorize]
public ActionResult ChangePassword()
{
// your code here
}
我們有幾個應用程序需要做這件事。通常情況下,我們的應用程序被鎖定在web.config:
<authentication mode="Windows"/>
<authorization>
<allow roles="DOMAIN\GroupNameHere"/>
<deny users="?"/>
</authorization>
<location path="ApiControllerName">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
但是,你還是要關閉Windows身份驗證該API控制器。
<location path="Default Web Site/ApplicationName/ApiControllerName">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="true" />
<windowsAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
這PowerShell腳本會爲你做它:您可以通過編輯IIS服務器上的applicationHost.config
文件並添加爲此
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$applicationLocationPath = "Default Web Site/ApplicationName/ApiControllerName"
$oIIS = new-object Microsoft.Web.Administration.ServerManager
$oGlobalConfig = $oIIS.GetApplicationHostConfiguration()
$oSection = $oGlobalConfig.GetSection("system.webServer/security/authentication/anonymousAuthentication", $applicationLocationPath)
$oSection.SetAttributeValue("enabled", "True")
$oSection = $oGlobalConfig.GetSection("system.webServer/security/authentication/windowsAuthentication", $applicationLocationPath)
$oSection.SetAttributeValue("enabled", "False")
$oIIS.CommitChanges()
先生,你救了我的命! – 130nk3r5
「只能夠做一個或另一個」你到底做了什麼? – bzlm
你究竟如何啓用Windows身份驗證? – gideon
IIS設置啓用了Windows身份驗證,並且還允許匿名。 Web.config具有。我將[Authorize]屬性添加到我需要保護的控制器,並將其從我想要公開的控制器中刪除。 –
Shawn