0

我有一个 ASP.NET MVC 网站。

我并不真正管理用户,但我登录到一个外部 API,然后我存储了一个"ASPXFORMSAUTH"cookie。

这是一个 WCF 服务。在我的控制器中,我调用:

MyWcfServiceClient.Login()

在 AfterReceiveReply 中,我将服务的响应存储在一个变量中:

cookie = httpResponse.Headers[HttpResponseHeader.SetCookie];

然后在控制器中,我得到这个 cookie 并使用:

Response.Cookies.Add(cookie);

我是 ASP.NET MVC 的初学者,但是[Authorize]只有在请求包含此 cookie 时,我才能使用该属性来允许访问控制器方法吗?以及[AllowAnonymous]API 登录前的方法。

编辑 :

所以它应该只添加[Authorize]属性就可以了?

我正在使用ajax调用控制器方法,其Request.Headers["Cookie"]值为.ASPXAUTH=1D415AF723......

但我得到了ajax错误回调......

我错过了什么吗?

4

2 回答 2

1

[Authorize] 将只允许授权用户访问。

您可以将它放在控制器的顶部,使其适用于控制器上的所有功能或单个功能的前面。它比这更强大,因为您只能允许特定的用户或角色。 文档在这里

当您向整个控制器添加某种授权但希望允许所有人访问控制器上的功能时,使用允许 [AllowAnonymous]。如果控制器上没有授权属性,则不需要它。此处的示例我认为 Visual Studio 中的默认 MVC 帐户在帐户控制器上使用它来进行密码休息和登录。

于 2014-08-13T08:18:44.470 回答
0

我不完全确定,因为我以前没有尝试过。但是,如果您设置了正确的 cookie(默认的 aspx auth cookie),AuthorizeAttribute 应该会阻止您在未经授权的情况下访问控制器。您是否尝试过在控制器上使用授权属性并使用您的外部 API 登录?因为它可能开箱即用。

另一种选择是通过制作自己的来扩展默认属性。有关这方面的更多信息,请参阅以下文章。

于 2014-08-13T08:32:18.820 回答