很不幸,我在网上找到的所有关于使用自定义角色和成员提供程序的Forms身份验证代码示例都是用VB.NET编写的,而我需要C#代码。请帮忙!!!
我需要一个codebehind来执行以下操作:
- 在单击登录按钮时验证用户 - 如果用户active_flag=0(false)或password!=@password,则显示错误:“Access Denied” - 如果用户admin_flag=1&active flag=1(true),则重定向到admin_pages\zipsearch.aspx - 如果用户admin_flag=0(false)&active_flag=1(true),则重定向到pages\zipsearch.aspx
Default.aspx代码:
我需要一个codebehind来执行以下操作:
- 在单击登录按钮时验证用户 - 如果用户active_flag=0(false)或password!=@password,则显示错误:“Access Denied” - 如果用户admin_flag=1&active flag=1(true),则重定向到admin_pages\zipsearch.aspx - 如果用户admin_flag=0(false)&active_flag=1(true),则重定向到pages\zipsearch.aspx
Default.aspx代码:
<asp:Login ID="LoginUser" runat="server" EnableViewState="false" RenderOuterTable="false">
<LayoutTemplate>
<span class="failureNotification">
<asp:Literal ID="FailureText" runat="server"></asp:Literal>
</span>
<asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification"
ValidationGroup="LoginUserValidationGroup"/>
<div class="accountInfo">
<fieldset class="login">
<legend>Account Information</legend>
<p>
<asp:Label ID="usernameLabel" runat="server" AssociatedControlID="username">Username:</asp:Label>
<asp:TextBox ID="username" runat="server" CssClass="textEntry"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="username"
CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:Label ID="passwordLabel" runat="server" AssociatedControlID="password">Password:</asp:Label>
<asp:TextBox ID="password" runat="server" CssClass="passwordEntry" TextMode="password"></asp:TextBox>
<asp:RequiredFieldValidator ID="passwordRequired" runat="server" ControlToValidate="password"
CssClass="failureNotification" ErrorMessage="Password is required." ToolTip="Password is required."
ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
</p>
<p>
<asp:CheckBox ID="RememberMe" runat="server"/>
<asp:Label ID="RememberMeLabel" runat="server" AssociatedControlID="RememberMe" CssClass="inline">Keep me logged in</asp:Label>
</p>
</fieldset>
<p class="submitButton">
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
</p>
</div>
</LayoutTemplate>
</asp:Login>
Web.config文件:
<authentication mode="Forms">
<forms loginUrl="~/default.aspx" timeout="2880" />
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="OleConnectionStringSource"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
Default.aspx.cs的代码后台:
namespace ACAWebApplication
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
// authenticate user
// if user active_flag=0 (false) OR password!=@password, display error: "Access Denied"
// if user admin_flag=1 & active flag=1 (true), redirect to admin_pages\zipsearch.aspx
// if user admin_flag=0 (false) & active_flag=1 (true), redirect to pages\zipsearch.aspx
}
}
}
Thanks a lot in advance! :)