asp.net-mvc – 允许Anonymous在asp.net mvc 3中调用某些操作

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 允许Anonymous在asp.net mvc 3中调用某些操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为ForgetPassword的动作.每次匿名尝试检索操作时,他/她都会被重定向登录页面.以下是我的实现.
  1. public ActionResult ForgotPassword(string UserName)
  2. {
  3. //More over when i place a breakpoint for the below line
  4. //its not even getting here
  5. return View("Login");
  6. }

这是我的web.config文件的一部分

  1. <location path="">
  2. <system.web>
  3. <authorization>
  4. <deny users="?"/>
  5. </authorization>
  6. </system.web>
  7. </location>
  8.  
  9. <location path="Content">
  10. <system.web>
  11. <authorization>
  12. <allow users="*"/>
  13. </authorization>
  14. </system.web>
  15. </location>
  16.  
  17. <location path="Scripts">
  18. <system.web>
  19. <authorization>
  20. <allow users="*"/>
  21. </authorization>
  22. </system.web>
  23. </location>
  24.  
  25. <location path="Images">
  26. <system.web>
  27. <authorization>
  28. <allow users="*"/>
  29. </authorization>
  30. </system.web>
  31. </location>
  32.  
  33. <authentication mode="Forms">
  34. <forms loginUrl="/Home/Login" timeout="5" slidingExpiration="false" />
  35. </authentication>

解决方法

因为你通过使用来拒绝所有人的申请.
  1. <authorization>
  2. <deny users="?"/>
  3. </authorization>

恕我直言,您不应该使用web.config来控制应用程序的身份验证,而是使用Authorize属性.

在RegisterGlobalFilters方法下的Global.asax文件添加

  1. public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  2. {
  3. filters.Add(new HandleErrorAttribute());
  4. filters.Add(new AuthorizeAttribute()); //Added
  5. }

或者您也可以使用[授权]装饰您的控制器

  1. [Authorize]
  2. public class HomeController : Controller
  3. {
  4. ...
  5. }

如果您使用的是ASP.NET MVC4,则对于需要匿名访问的操作,请使用AllowAnonymous属性

  1. [AllowAnonymous]
  2. public ActionResult ForgotPassword() {
  3. //More over when i place a breakpoint for the below line
  4. //its not even getting here
  5. return View("Login");;
  6. }

根据Reference,您不能使用路由或web.config文件来保护您的MVC应用程序.保护MVC应用程序唯一受支持方法是将Authorize属性应用于每个控制器,并在登录注册操作上使用新的AllowAnonymous属性.根据当前区域做出安全决策是非常糟糕的事情,并会将您的应用程序打开到漏洞中.

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