[英]Why is AllowAnonymous not working while deployed to Azure Websites?
我有一个带有以下控制器的MVC4 Web应用程序
[Authorize]
public class AccountController : BaseController
{
[AllowAnonymous]
public ActionResult SignInRegister(LoginModel loginModel, string returnUrl)
{
//some implementation
}
//other secured actions
}
这在本地运行时按预期工作,但是一旦我将其部署到Free Azure网站,我就会收到401
错误代码并显示以下消息: You do not have permission to view this directory or page.
删除[Authorize]
属性并重新部署按预期工作,再次添加并重新部署会带来问题。
我甚至尝试了完全限定的类名: System.Web.Mvc.Authorize
和System.Web.Mvc.AllowAnonymous
,结果相同。
该应用程序使用的是.NET 4.5,Azure网站也配置为使用4.5。
更新: BaseController
有一个动作,将Header作为部分视图返回,该视图未使用[AllowAnonymous]
修饰。 在本地,它导致页面显示没有标题,但在Azure网站上,响应被切断,只返回上面提到的错误消息。 在我故意调查它之前,我没有意识到标题丢失了。
现在问题有待提出:为什么Azure网站会覆盖响应?
BaseController有一个动作,它将Header作为部分视图返回,该视图未使用[AllowAnonymous]进行修饰。 在本地,它导致页面显示没有标题,但在Azure网站上,响应被切断,只返回上面提到的错误消息。 在我故意调查它之前,我没有意识到标题丢失了。
现在问题有待提出:为什么Azure网站会覆盖响应?
我有完全相同的问题,就像Jonas的更新说的那样,你需要注意返回部分视图并具有[Authorize]属性的Actions。
您需要做的是删除[Authorize]属性,然后如果您的操作需要对用户进行身份验证才能正确呈现,请让您的代码处理未经授权的案例。
例如,您的页面是否通过“部分”显示当前登录的用户名。 如果当前登录的用户不可用,请让您的操作显示空字符串或其他内容。
如果有,请检查您的web.config
<authorization>
<deny users="?" />
</authorization>
它的覆盖[AllowAnonymous]
添加到web.config部分:
<location path="YourController/AnonymousMethod">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
允许匿名访问AnonymousMethod
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.