2つのフォルダーを持つWebアプリケーションがあります。それぞれのページを含む管理者とトレーナー。以下のように、各フォルダーにweb.configがあります。これらの構成設定を使用してログインすると、ユーザーは自分のホームページへのアクセスを拒否されます。拒否ユーザーを削除すると、誰でもログインできます。WSATを使用してロールを作成し、ロールにユーザーを追加しました。
管理者用のWeb.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Administrator" />
<deny users="?"/>
</authorization>
</system.web>
</configuration>
トレーナー用Web.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="Trainer" />
<deny users="?"/>
</authorization>
</system.web>
</configuration>
ルートフォルダWeb.Configファイル
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="TSS" connectionString="Data Source = VC-SQL2008; Integrated
Security=True; database = aspnetdb" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" timeout="2880" />
</authentication>
</system.web>
<system.web>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider" connectionStringName="TSS"
requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
enablePasswordRetrieval="false" enablePasswordReset="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/"/>
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="TSS" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="TSS" applicationName="/" name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider" />
<!--<add applicationName="/" name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />-->
</providers>
</roleManager>
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
役割を追加した方法に関するweb.sitemapの例
enter<siteMapNode url="Administrator/Admin_Home.aspx" title="Home" description=""
roles="Administrator">
Login.aspx.cs 名前空間TSS{パブリック部分クラスLogin2:System.Web.UI.Page {protected void Page_Load(object sender、EventArgs e){dbConnection dbConn = new dbConnection(); }
protected void submit_Click(object sender, EventArgs e)
{
// var a = Session["username"];
string password = tb_password.Text;
// Membership.CreateUser("s.g@visiblechanges.com", "9000");
bool x = Membership.ValidateUser(tb_email.Text, password);
string f_name;
string l_name;
string trainer="";
DataTable dt = new DataTable();
dt = TSS_WebService.getEmployeeByEmail(tb_email.Text);
foreach (DataRow row in dt.Rows)
{
f_name = row["First_Name"].ToString();
l_name = row["Last_Name"].ToString();
trainer = row["First_Name"].ToString() + " " +
row["Last_Name"].ToString();
}
if (x == true)
{
Session["username"] = tb_email.Text;
Session["trainer"] = trainer;
if (Roles.IsUserInRole(tb_email.Text, "Administrator"))
{
Response.Redirect("~/Administrator/Admin_Home.aspx");
}
if (Roles.IsUserInRole(tb_email.Text, "Trainer"))
{
Response.Redirect("~/Trainer/Trainer_Home.aspx");
}
if (Roles.IsUserInRole(tb_email.Text, "Salon Manager"))
{
Response.Redirect("~/Salon/Salon_Home.aspx");
}
if (Roles.IsUserInRole(tb_email.Text, "IT"))
{
Response.Redirect("Home.aspx");
}
}
else
{
FormsAuthentication.RedirectToLoginPage();
}
}
}
}
***Login.aspx***
<%@ Page Title="" Language="C#" MasterPageFile="~/Master/Master.Master"
AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="TSS.Login2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="BreadCrumbs" runat="server">
<asp:SiteMapPath ID="SiteMapPath1" runat="server">
</asp:SiteMapPath>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainArea" runat="server">
<div id = "loginBox">
<h2> LOGIN</h2>
<asp:TextBox ID="tb_email" runat="server" class = "ipBox_large"></asp:TextBox><br
/>
<asp:TextBox ID="tb_password" runat="server" class = "ipBox_large"></asp:TextBox>
<br />
<asp:ImageButton ID= "btn" ImageUrl = "../Images/btnLogin.gif" OnClick =
"submit_Click"
runat="server" />
<asp:CheckBox id="NotPublicCheckBox" runat="server" />
</div>
</asp:Content>
私はこれに2日間悩まされており、可能な限りすべてを調査してきました。助けやアドバイスをいただければ幸いです。