我之前在 c# asp.net webforms 中设置了成员文件夹,只允许某些用户并在用户未通过身份验证时重定向。我想知道这是否可能/如果 Session 为空,我将如何根据天气实现身份验证 Session 变量(填充了一个值)或不进行身份验证。
我希望这样的事情可能类似于您在 we.config 中为整个文件夹设置权限的方式。
它可以在标准 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