[英]How to Manage Role Based User Rights using asp.net & MSSQL?
我有多個asp.net網絡表單和sql express數據庫。 在Web表單中,需要從菜單中控制3種類型的動作
ADD, DELETE , EDIT.
我想創建自定義用戶角色,以指定用戶權限來管理asp.net c#應用程序的訪問控制(菜單,添加,刪除和編輯可見性)。
目前,我正在嘗試在每個頁面上為每個按鈕和鏈接使用簡單的SQL Reader查詢。
string yes = "1";
if (rdr["access"].ToString() == yes.ToString())
Button1.Visible = true;
您將需要以下SQL表:
CREATE TABLE Roles
(
Rolename Text (255) NOT NULL,
ApplicationName Text (255) NOT NULL,
CONSTRAINT PKRoles PRIMARY KEY (Rolename, ApplicationName)
)
CREATE TABLE UsersInRoles
(
Username Text (255) NOT NULL,
Rolename Text (255) NOT NULL,
ApplicationName Text (255) NOT NULL,
CONSTRAINT PKUsersInRoles PRIMARY KEY (Username, Rolename, ApplicationName)
)
然后構建Role Provider類
您可以使用EF或ADO.NET來實現方法
public class SqlRoleProvider: RoleProvider
{
public override void Initialize(string name, NameValueCollection config)
{
//
// Initialize values from web.config.
//
}
public override void AddUsersToRoles(string[] usernames, string[] rolenames)
{
}
public override void CreateRole(string rolename)
{
}
public override bool DeleteRole(string rolename, bool throwOnPopulatedRole)
{
}
public override string[] GetAllRoles()
{
}
public override string[] GetRolesForUser(string username)
{
}
public override string[] GetUsersInRole(string rolename)
{
}
public override bool IsUserInRole(string username, string rolename)
{
}
public override void RemoveUsersFromRoles(string[] usernames, string[] rolenames)
{
}
public override bool RoleExists(string rolename)
{
}
public override string[] FindUsersInRole(string rolename, string usernameToMatch)
{
}
}
您必須在web.config中進行設置
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="DSN=RolesDSN;" />
</connectionStrings>
<system.web>
<authentication mode="Forms" />
<forms loginUrl="loginvb.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<roleManager defaultProvider="SqlRoleProvider"
enabled="true"
cacheRolesInCookie="true"
cookieName=".ASPROLES"
cookieTimeout="30"
cookiePath="/"
cookieRequireSSL="false"
cookieSlidingExpiration="true"
cookieProtection="All" >
<providers>
<clear />
<add
name="SqlRoleProvider"
type="Samples.AspNet.Roles.SqlRoleProvider"
connectionStringName="SqlServices"
applicationName="SampleApplication"
writeExceptionsToEventLog="false" />
</providers>
</roleManager>
</system.web>
</configuration>
Microsoft上有示例角色提供程序:
配置和數據庫模式:
https://msdn.microsoft.com/en-us/library/tksy7hd7.aspx
OLEDB(訪問數據庫)的示例實現,您可以使用SqlConnection,SqlCommand,SqlDataReader將實現更改為使用SQL數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.