根据用户所在的文件夹将用户重定向到登录页面。我有一个带有根目录的Web应用程序,供所有用户和管理站点使用。
对于需要网站身份验证功能的用户,他们需要登录并重定向到root / login.aspx。但是,当管理员需要登录网站的root / admin /部分时,我希望将它们重定向到root / admin / login.aspx上的登录表单
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
我在root / admin目录中有这个文件。我尝试添加以下行,但它给出了错误。
<authentication>
<forms defaultUrl="default.aspx" loginUrl="default.aspx"></forms>
</authentication>
基本上我试图覆盖主应用程序中存在的defaulturl和loginurl。
答案 0 :(得分:9)
您需要在web.config中使用<location>
元素。您可以使用<location>
标记将授权设置应用于单个文件或目录。
<location path="/root">
<system.web>
<authentication mode="Forms" >
<forms name="LoginForm" defaultUrl="default.aspx"
loginUrl="/root/login.aspx" protection="Encryption"
timeout="30" path="/"/>
</authentication>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="/root/admin">
<system.web>
<authentication mode="Forms" >
<forms name="formName" defaultUrl="login.aspx"
loginUrl="/root/admin/login.aspx" protection="Encryption"
timeout="30" path="/"/>
</authentication>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
对于集中管理, 设置可以应用于 Machine.config文件。设置中 Machine.config文件定义 机器范围的政策也可以 用于应用特定于应用程序 使用
<location>
进行配置 元素。开发人员可以提供 应用程序配置文件到 覆盖机器策略的各个方面。 对于ASP.NET Web应用程序,a Web.config文件位于 应用程序的虚拟根目录 并且可选地在子目录中 在虚拟根目录下。
如果您想要1个登录位置和不同的访问级别,您可能需要使用roles。
<location path="/root">
<system.web>
<authorization>
<allow roles="admin,root" />/*admin, root is allowed */
<deny users="*" />
</authorization>
<system.web>
</location>
<location path="/root/admin">
<system.web>
<authorization>
<allow roles="admin" />/*admin is allowed */
<deny users="*" />
</authorization>
<system.web>
</location>
用户可以属于多个 角色。例如,如果您的网站是 讨论论坛,有些用户可能会 在会员和...的作用 版主。您可以定义每个角色 拥有不同的特权 站点以及同时担任这两个角色的用户 然后会有两套 特权。
您可以访问所有这些元素 代码级别,如果你愿意 操纵角色/身份验证 编程
Page.User.Identity.Name
Page.User.Identity.IsAuthenticated
Page.User.Identity.AuthenticationType
Page.User.IsInRole("string");
<强>教程强>