我的网站应该有一些部分,只有在用户通过身份验证时才会看到,某些部分对每个人都是可见的。
无论访问哪个页面,表单身份验证始终会将用户重定向到登录页面。这是否意味着我不应该使用表单身份验证?我该如何解决这个问题?
答案 0 :(得分:1)
使用< location> web.config中的元素,用于设置受保护的页面。您需要从整个网站中删除授权,并为< location>中的每个受保护网页设置授权。元件。
常见的方法是将所有受保护的页面放在单独的文件夹中,并指定该文件夹的位置路径。
另一个是拥有一个继承System.Web.Page的类,并在Init事件中将用户重定向到某个页面,如果未经过身份验证。然后每个页面都应继承此页面。
<system.web>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
</system.web>
<location path="public">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="login.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</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的更多信息,请参阅此文章。