在我的MVC3应用程序中,MembersController使用[Authorize]属性进行修饰。
MembersController有一个名为MyPage的Action。由于控制器上的Authorize属性,MyPage只能由授权用户请求。
当未经授权的用户尝试请求/ Members / MyPage时,他们会被正确地重定向到登录页面。
但是,ReturnUrl参数不会传递到登录页面,因此当用户进行身份验证时,它们将被带到默认页面(我们称之为/ Members / Home),而不是/ Members / MyPage。
为什么?!
在MVC2中开发的另一个应用程序中,returnUrl QS参数存在并按预期工作。
在装饰控制器和操作时,将忽略Autorize属性。
在.NET 3.5和.NET 4之间没有正确更新web.config的部分。请参阅下面的答案。
答案 0 :(得分:3)
似乎这个问题与web.config有关,当我将现有的Web Forms .NET 3.5应用程序合并到.NET 4.0应用程序时,我没有正确更新。我不记得我是怎么做到的。
无论如何,通过将我的应用程序的web.config与新的MVC 3 web.config进行比较,我能够找到不应该存在的额外位,从3.5天开始遗留下来。
通过更正< authentication>< forms>中的位来解决该问题。 web.config中的标记,以及< membership>标签
由此引起的另一个问题是,如果我使用Authorize属性修饰控制器,它会被忽略,因此控制器尝试根据当前用户处理信息,显然是null,因此各种异常都是烧成。
答案 1 :(得分:1)
它对我有用。我使用ASP.NET MVC 3 RC2创建了一个新项目,默认模板,添加了一个MembersController,用[Authorize]
属性装饰它,运行应用程序,请求/members/index
,重定向到{{1}登录时,已重定向到/Account/LogOn?ReturnUrl=%2fmembers%2findex
。您的代码必定存在其他问题。
以下是它的工作原理:
/members/index
属性检查用户是否经过身份验证,如果不是,则返回401状态代码。 [Authorize]
模块并非特定于ASP.NET MVC,这是标准的ASP.NET内容