设置

在我的MVC3应用程序中,会员controller装饰有[授权]属性。

会员controller有一个名为mypage的动作。由于控制器上的授权属性,只有授权用户才能要求mypage。

问题

当未经授权的用户试图请求 /成员 /mypage时,他们将正确地重定向到登录页面。

但是,返回参数未传递到登录页面中,因此,当用户身份验证时,将其带到默认页面(我们称其为 /成员 /home),而不是 /成员 /mypage。

问题

为什么?!

在MVC2中开发的另一个应用程序中,ReTurnUrl QS参数在那里并按预期工作。

其他问题:

装饰控制器和动作时,自动化属性被忽略。

解析度:

Web.config的部分未正确更新.NET 3.5和.NET 4.请参见下面的答案。

有帮助吗?

解决方案

@marcind使我走上正确的轨道,@darin dimitrov的答案非常有启发性。

诊断

该问题似乎与Web.config有关,我在合并现有Web Forms .NET 3.5 App与.NET 4.0应用程序时无法正确更新。我不记得我怎么了。

无论如何,通过将我的应用程序的Web.config与新的MVC 3 web.config进行比较,我能够找到3.5天的额外位置。

解析度:

该问题是通过纠正位置而解决的u003Cauthentication>u003Cforms>在web.config中标记u003Cmembership>标签。

由此引起的其他问题:

由此引起的另一个问题是,如果我用授权属性装饰了一个控制器,则被忽略了,因此控制器试图根据当前用户处理信息,显然是无效的,因此触发了各种例外。

其他提示

这个对我有用。我使用ASP.NET MVC 3 RC2创建了一个新项目,默认模板添加了一个成员controller,并将其装饰 [Authorize] 属性,运行应用程序,请求 /members/index, ,被重定向到 /Account/LogOn?ReturnUrl=%2fmembers%2findex, ,登录,被重定向到 /members/index. 。您的代码还必须有其他问题。

以下是它的工作方式:

  • [Authorize] 属性检查用户是否经过身份验证,如果不是,则返回401状态代码。
  • formauthenticationModule 这是ASP.NET和处理表单身份验证的一部分,通过将returnurl参数附加到指向初始请求的请求中,将401状态代码和重定向到登录页面。

FormsAuthenticationModule 模块不是特定于ASP.NET MVC,这是标准的ASP.NET东西

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top