3

我之前在 c# asp.net webforms 中设置了成员文件夹,只允许某些用户并在用户未通过身份验证时重定向。我想知道这是否可能/如果 Session 为空,我将如何根据天气实现身份验证 Session 变量(填充了一个值)或不进行身份验证。

我希望这样的事情可能类似于您在 we.config 中为整个文件夹设置权限的方式。

4

1 回答 1

2

它可以在标准 asp.net 功能的帮助下完成。我将尝试为它提供一种可能的解决方案。首先你需要设置“web form authentication” ASP.NET Authentication,你应该修改你的web.config。

<system.web>
   <authentication mode="Forms">
      <forms name="Custom" loginUrl="/login.aspx" />       
   </authentication>
</system.web>

然后,您需要在 web.config 和ASP.NET Authorization中指定成员位置。

<location path="folders/memberN">
   <system.web>
      <authorization>
         <allow roles="memberN"/>
         <deny users="*"/>
      </authorization>
   </system.web>
</location>

这将允许组“memberN”中的所有用户在“folders/memberN”路径下工作。

接下来,我们需要将成员资格角色提供者添加到您的 web.config。基于 sql server 提供程序配置的成员资格和角色提供程序。

<configuration>
    <connectionStrings>
        <add name="SqlServices" 
             connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial 
             Catalog=aspnetdb;" />
    </connectionStrings>
    <system.web>
        <roleManager defaultProvider="SqlProvider" 
          enabled="true"
          cacheRolesInCookie="true"
          cookieName=".ASPROLES"
          cookieTimeout="30"
          cookiePath="/">
          <providers>
            <add
              name="SqlProvider"
              type="System.Web.Security.SqlRoleProvider"
              connectionStringName="SqlServices" 
              applicationName="SampleApplication" />
          </providers>
        </roleManager>
        <membership 
             defaultProvider="SqlProvider"
             userIsOnlineTimeWindow="20">
             <providers>
                <remove name="AspNetSqlProvider" />
                <add name="SqlProvider"
                    type="System.Web.Security.SqlMembershipProvider"
                    connectionStringName="SqlServices"
                    applicationName="/" />
            </providers>
        </membership>
    </system.web>
</configuration>

最后我们需要在数据库中创建特殊的表(更多细节)。

%WINDOWS%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe -S <server> -E -d <database> -A all
于 2012-08-02T17:47:35.850 回答