MVC 3授权属性在action方法中不起作用

时间:2012-06-13 11:06:40

标签: asp.net-mvc-3 authorization asp.net-authorization

在我的Web应用程序中,我想在控制器中的某些操作方法中添加授权,而不是在整个控制器上。我添加了以下

  [Authorize]
  public ActionResult ManageResturant(long Id = 0)
  {
  }

并在web.config中添加了

<authentication mode="Forms" >
  <forms loginUrl="~/Auth/LogIn"/>
</authentication>

但当我转到该操作方法时,页面正常加载,这是错误的,我希望页面重定向到登录页面

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

感谢John的评论,在您提示我的代码

之后,我确实找到了解决方案

我使用会话来使用FormsAuthentication存储登录用户,以确保所有用户都登录以使登录链接显示给他们

问题是当会话到期时,FormsAuthentication仍然将用户验证为登录用户,因此看起来用户已注销,但实际上他已使用表单身份验证登录

所以我做了什么OnActionExecuting方法我检查会话,如果它的null我为用户注销,所以在这种情况下,我确保用户已注销

答案 1 :(得分:0)

设置看起来没问题,您确定要调用此动作吗?在没有[授权]注释的情况下,您是否还有另一个名为ManageResturant的Action?