我一直在这里测试示例代码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
在无限循环中重定向回
登录验证码.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
//............
验证用户后如何从登录页面重定向?我怀疑这可能与回发有关,但需要一些帮助