MVC上的表单身份验证始终重定向到登录

时间:2010-10-12 16:41:19

标签: asp.net-mvc forms authentication

我在MVC网站上有表单身份验证,默认路由设置为将用户发送到/ home / index。 Home / index通过Web.config位置部分从登录要求中排除。如果我输入http://Example/home/index,我会按预期进入主页,但如果我只是http://Example,我会被重定向到登录页面。

如果我关闭身份验证并执行http://Example,默认路由工作正常,我就会被发送到主页。

为什么身份验证不遵守默认路由?谢谢!

2 个答案:

答案 0 :(得分:6)

您不应该使用<location>中的web.config元素来处理ASP.NET MVC应用程序中的授权,因为它可能会与您的路由冲突。这用于标准的WebForms应用程序,但在MVC中被认为是不好的做法。

处理此问题的推荐方法是使用[AuthorizeAttribute]修饰控制器/操作。因此,请删除web.config中的所有location元素并进行装饰。

答案 1 :(得分:0)

对我来说,问题是MachineKey。如果正在执行该操作,则需要解密/加密cookie (例如:Web场)。因为应用程序无法解密cookie,即使它来回传递,应用程序的行为就像cookie甚至不存在一样。将此设置添加到web.config为我修复了它:

<machineKey compatibilityMode="Framework20SP2" validationKey="some_hard_coded_long_key" decryptionKey="another_hard_coded_long_key" validation="SHA1" />

有关machinekey的更多信息,请参阅此文章。