我有一个ASP.NET MVC网站。
我没有真正管理用户,但我登录外部API然后存储了"ASPXFORMSAUTH"
cookie。
这是一个WCF服务。在我的控制器中,我打电话给:
MyWcfServiceClient.Login()
在AfterReceiveReply中,我将服务的响应存储在变量中:
cookie = httpResponse.Headers[HttpResponseHeader.SetCookie];
然后在控制器中,我获取此cookie并使用以下方式存储它:
Response.Cookies.Add(cookie);
我是ASP.NET MVC的初学者,但是只有在请求包含此cookie时才能使用[Authorize]
属性来允许访问控制器方法吗? API登录前的方法[AllowAnonymous]
。
编辑:
所以它应该只添加[Authorize]
属性吗?
我正在使用ajax调用控制器方法,Request.Headers["Cookie"]
的值为.ASPXAUTH=1D415AF723......
但是我得到了ajax错误回调......
我错过了什么吗?
答案 0 :(得分:1)
[授权]仅允许授权用户访问。
您可以将它放在控制器的顶部,使其适用于控制器上的所有功能或单个功能的前面。它比它更强大,因为你只能允许特定的用户或角色。 documentation here
当您向整个控制器添加某种授权但希望允许所有控制器上的函数访问时,使用allow [AllowAnonymous]。如果控制器没有授权属性,则不需要它。 example here我认为visual studio中的默认MVC帐户在帐户控制器上使用它来进行密码休息和登录。
答案 1 :(得分:0)
我不确定,因为我之前没有尝试过。但是,如果您设置了正确的cookie(默认的aspx auth cookie),AuthorizeAttribute会阻止您在未经授权的情况下到达控制器。您是否尝试在控制器上使用authorize属性并使用外部API登录?因为它可能只是开箱即用。
另一种选择是通过制作自己的默认属性来扩展默认属性。有关此内容的详细信息,请参阅以下文章。