我有一个ASP.NET MVC网站被锁定使用表单身份验证. web.config有
<authentication mode="Forms"> <forms defaultUrl="~/Account/logon" loginUrl="~/Account/logon" timeout="2880"/> </authentication> <authorization> <deny users="?"/> </authorization>
除非用户进行身份验证,否则我可以查看除帐户/ logon之外的其他页面.
现在我试图添加PayPal IPN到我的网站,为了做到这一点,我需要有两个页面处理PayPal的付款确认和谢谢页面.这两个页面需要用于匿名用户.
我希望这些页面成为我的帐号控制器的控制器操作.有什么办法可以将属性应用于使匿名用户可用的特定操作方法吗?我发现这里的几个帖子试图这样做,但大多数人都想要相反的情况.
基本上,我想让AccountController类除了少数几个方法以外没有大多数方法的授权.现在看来,只有logon方法可用于匿名用户.
提前感谢所有的帮助.
解决方法
是的你可以.在您的AccountController中,有一个[授权] – 属性在类级别(使整个控制器受到限制)或特定方法.
要限制特定操作,只需在处理这些操作的方法上使用Authorize-attribute,并将控制器类置于无限制状态.
这里有几个例子…希望它有帮助
[Authorize] public class SomeController : Controller // Or [Authorize] public ActionResult SomeAction()
要限制特定角色的访问,请使用:
[Authorize(Roles = "Admin,User")] public class SomeController : Controller // Or [Authorize(Roles = "Admin,User")] public ActionResult SomeAction()
并限制访问特定用户,请使用:
[Authorize(Users = "Charles,Linus")] public class SomeController : Controller // Or [Authorize(Users = "Charles,Linus")] public ActionResult SomeAction()