使用RoleProvider的一个疑问

本文讨论了一个问题:如何避免在web.config文件中频繁设置location节点来管理权限路径,并探讨了将这些路径信息存储在数据库中以实现动态权限管理的可能性。
我在我的项目中使用了自定义的RoleProvider,
老是要在web.config中设定location节点。
觉得不是很方便。

请教有无方法能把这些location path写在数据库中,动态设定权限路径?或者更好的办法?

转载于:https://www.cnblogs.com/bankey/archive/2008/01/08/1029943.html

如果您想创建一个职技帮网站的注册和登录功能,可以使用 ASP.NET 内置的 Membership API 和表单认证和授权功能来实现。 1. 创建数据库表格 首先,您需要创建一个数据库表格来存储用户的注册信息。您可以使用 SQL Server Management Studio 或其他数据库管理工具来创建一个名为 "Users" 的表格,并添加以下列: - UserId (int, primary key, identity):用户的唯一标识符 - UserName (nvarchar(50), not null):用户的用户名,用于登录 - PasswordHash (nvarchar(100), not null):用户的密码哈希值,用于验证密码 - Email (nvarchar(50), not null):用户的电子邮件地址 - IsApproved (bit, not null):用户是否已被管理员批准 - IsLockedOut (bit, not null):用户是否已被锁定 2. 配置 Web.config 文件 接下来,您需要在 Web.config 文件中配置 Membership 和表单认证和授权功能。您可以使用以下代码示例: ``` <connectionStrings> <add name="MembershipConnectionString" connectionString="Data Source=localhost;Initial Catalog=YourDatabaseName;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <authentication mode="Forms"> <forms name=".ASPXAUTH" loginUrl="~/Account/Login.aspx" timeout="2880"/> </authentication> <membership defaultProvider="SqlMembershipProvider"> <providers> <clear /> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MembershipConnectionString" applicationName="YourApplicationName" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordFormat="Hashed" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordStrengthRegularExpression="" /> </providers> </membership> <authorization> <deny users="?" /> <allow users="*" /> </authorization> </system.web> ``` 请注意,您需要将 "YourDatabaseName" 和 "YourApplicationName" 替换为您自己的数据库名称和应用程序名称。 3. 创建注册页面 现在,您可以创建一个名为 "Register.aspx" 的页面,用于显示注册表单。您可以使用 CreateUserWizard 控件来创建一个简单的注册表单,如下所示: ``` <asp:CreateUserWizard ID="CreateUserWizard1" runat="server"> <WizardSteps> <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"> <ContentTemplate> <asp:TextBox ID="UserName" runat="server" /> <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="Please enter a user name." /> <asp:RegularExpressionValidator ID="UserNameValidator" runat="server" ControlToValidate="UserName" ErrorMessage="User name may only contain letters and numbers." ValidationExpression="^[a-zA-Z0-9]+$" /> <asp:TextBox ID="Password" TextMode="Password" runat="server" /> <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Please enter a password." /> <asp:TextBox ID="ConfirmPassword" TextMode="Password" runat="server" /> <asp:CompareValidator ID="PasswordCompare" runat="server" ControlToCompare="Password" ControlToValidate="ConfirmPassword" ErrorMessage="Passwords do not match." /> <asp:TextBox ID="Email" runat="server" /> <asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email" ErrorMessage="Please enter an email address." /> <asp:RegularExpressionValidator ID="EmailValidator" runat="server" ControlToValidate="Email" ErrorMessage="Please enter a valid email address." ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" /> </ContentTemplate> </asp:CreateUserWizardStep> <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server" /> </WizardSteps> </asp:CreateUserWizard> ``` 请注意,您需要将 CreateUserWizard 控件的 MembershipProvider 属性设置为 "SqlMembershipProvider",以便使用上面配置的 SqlMembershipProvider。 4. 创建登录页面 接下来,您可以创建一个名为 "Login.aspx" 的页面,用于显示登录表单。您可以使用 Login 控件来创建一个简单的登录表单,如下所示: ``` <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/Default.aspx"> <LayoutTemplate> <asp:TextBox ID="UserName" runat="server" /> <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" ErrorMessage="Please enter a user name." /> <asp:TextBox ID="Password" TextMode="Password" runat="server" /> <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="Please enter a password." /> <asp:CheckBox ID="RememberMe" runat="server" Text="Remember me next time" /> <asp:Button ID="LoginButton" runat="server" Text="Log In" /> </LayoutTemplate> </asp:Login> ``` 请注意,您需要将 Login 控件的 MembershipProvider 属性设置为 "SqlMembershipProvider"。 5. 实现用户管理 最后,您需要实现用户管理功能,例如批准用户、锁定用户和重置密码等。您可以使用 Membership 提供的方法来实现这些功能,例如: - Membership.GetUser(userName):获取指定用户名的用户对象 - Membership.ApproveUser(userName):批准指定用户名的用户 - Membership.GetUser(userName).IsApproved:获取指定用户名的用户是否已被批准 - Membership.GetUser(userName).IsLockedOut:获取指定用户名的用户是否已被锁定 - Membership.GetUser(userName).UnlockUser():解锁指定用户名的用户 - Membership.GetUser(userName).ResetPassword():重置指定用户名的用户密码 您可以在代码中使用这些方法来实现用户管理功能。同时,您也可以使用 RoleProvider 来实现角色管理功能,例如将用户分配到不同的角色中,以控制他们对网站的访问权限。 希望这些信息对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值