ここでサンプルコードをテストしていますhttp://mywsat.codeplex.com/
彼らの例では、admin
ページまたはmembers
個別のリンクを使用してページにログインするためのさまざまなボタンがあります
ただし、ランディング ページへの単一のリンクを使用しようとしており、ユーザーがログインした後、分離コードを使用して関連ページにリダイレクトします。ランディング ページにはログインが必要ですが、すべてのロールがルールで設定されたこのページを表示できます。
ランディングページ.aspx:
protected void Page_Load(object sender, EventArgs e)
{
string redirectPath;
string pagePath = Request.AppRelativeCurrentExecutionFilePath;
if (Page.User.IsInRole("Administrator"))
{
//Admin
redirectPath = "~/admin/Default.aspx";
if (redirectPath != pagePath)
{
Response.Redirect(redirectPath);
}
}
else if (Page.User.IsInRole("Member"))
{
//Members
redirectPath = "~/members/Default.aspx";
if (redirectPath != pagePath)
{
Response.Redirect(redirectPath);
}
}
else if (Page.User.IsInRole("Trial"))
{
//Trial
redirectPath = "~/trial/Default.aspx";
if (redirectPath != pagePath)
{
Response.Redirect(redirectPath);
}
}
else
{
//Non member
redirectPath = "~/Default.aspx";
if (redirectPath != pagePath)
{
Response.Redirect(redirectPath);
}
}
}
問題は、Page_Load イベントがすぐに発生し、イベントlogin-with-captcha.ascx
が発生した後に起動することです。
それで、コードをログインフォームに移動しlogin-with-captcha.ascx.cs
てリダイレクト しましたが、無限ループでe.Authenticated = true;
リダイレクトされますlogin-with-captcha.ascx
login-with-captcha.ascx.cs:
// Next, determine if the user's username/password are valid
if (Membership.ValidateUser(loginUsername, loginPassword))
{
e.Authenticated = true;
//tried redirecting from here based on role!
}
else
//............
ユーザーが検証された後、ランディング ページからリダイレクトするにはどうすればよいですか? ポストバックと関係があるのではないかと思いますが、助けが必要です