ASP.NET窗体身份验证 - 多个登录

时间:2011-06-22 15:39:34

标签: asp.net-membership asp.net-authentication asp.net-authorization

我确定之前已经多次询问过这个问题的变体,但我找不到答案。

我的网站是网上商店。我们有以下登录/帐户管理要求:

Admin角色的成员登录/ Admin Pro角色的成员登录/ Pro 客户角色的成员没有他们登录的特定区域,但在结账时我们希望他们能够登录,这样他们就不必再次填写他们的交付细节。

因此我们希望url结构类似于:

/Checkout.aspx(/登录表单) /Admin/Login.aspx /Pro/Login.aspx(这里唯一的例外是我们希望用户能够在不登录的情况下访问/Pro/Register.aspx页面 - 原因很明显)

如果我从主web.config中删除身份验证配置并在每个pro和admin文件夹中创建了一个web.config文件,我认为这是可能的。在IIS 7中,我将文件夹更改为应用程序,但页面无法访问主站点的主页。

我能以正确的方式解决这个问题吗?

提前致谢。

的Al

2 个答案:

答案 0 :(得分:0)

我不知道你为什么需要将文件夹更改为应用程序,但是在每个子目录中创建“sub”web.config文件的策略是实现此目的的一种正确方法。

另一种方法是在每个页面或目录的root web.config中声明权限,如下例所示(来自here):

<configuration>
    <system.web>
        <authentication mode="Forms" >
            <forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" >
            </forms>
        </authentication>
<!-- This section denies access to all files in this application except for those that you have not explicitly specified by using another setting. -->
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
<!-- This section gives the unauthenticated user access to the Default1.aspx page only. It is located in the same folder as this configuration file. -->
        <location path="default1.aspx">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Subdir1 folder.  -->
        <location path="subdir1">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
</configuration>

答案 1 :(得分:0)

您不应该创建新的应用程序;只需为您的子文件夹包含一个web.config,其授权仅允许您希望能够访问该文件夹的角色。