asp.net-mvc – ASP.NET MVC表单身份验证和未经身份验证的控制器操作

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC表单身份验证和未经身份验证的控制器操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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()

您可以看到,您可以在类级别或方法级使用属性.你的选择!

猜你在找的asp.Net相关文章