在我的應用程序,我需要檢查的作用爲loggind用戶確定用戶是否可以看到一些控制或不沒有提供者的角色管理?
首先我用一個LoginView模板從MS但是我沒有用戶分貝無論是角色db 所以我不能添加角色提供者,所以我不能使用角色類來檢查用戶\角色
就像在我的情況一樣,我有一個與用戶信息和他擁有的角色的會話,而我需要對這些角色執行檢查,以設置哪些控件將啓用給用戶,但採用標準方式「使用.net內置的類或代碼」
在我的應用程序,我需要檢查的作用爲loggind用戶確定用戶是否可以看到一些控制或不沒有提供者的角色管理?
首先我用一個LoginView模板從MS但是我沒有用戶分貝無論是角色db 所以我不能添加角色提供者,所以我不能使用角色類來檢查用戶\角色
就像在我的情況一樣,我有一個與用戶信息和他擁有的角色的會話,而我需要對這些角色執行檢查,以設置哪些控件將啓用給用戶,但採用標準方式「使用.net內置的類或代碼」
如果你想使用asp.net成員的零件/認證/ A uthorisation服務您需要實現一個自定義角色提供程序來執行角色成員資格檢查。
做的第一件事是創建一個類,從System.Web.Security.RoleProvider
繼承,其中這聽起來像你最初會在乎實施方法是:
所以,你最終會得到一些荷蘭國際集團類似:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
public class MyCustomRoleProvider : RoleProvider
{
public override string[] FindUsersInRole(string roleName, string usernameToMatch)
{
}
public override string[] GetRolesForUser(string username)
{
}
public override string[] GetUsersInRole(string roleName)
{
}
public override bool IsUserInRole(string username, string roleName)
{
return GetUsersInRole(roleName).Contains(username);
}
}
注:Visual Studio中會出現很多的方法,比如GetAllRoles
與throws new NotImplementedException()
,但我已經寫之前,只需要實現方法的「最低限度」的角色提供商我列在上面。這是爲了「只讀」角色,其中的網絡應用程序沒有更新它們。
然後,您需要將roleManager
元素system.web
下添加到您的web.config
文件,如下所示:
<roleManager defaultProvider="NameOfYourRoleProvider" enabled="true">
<providers>
<clear />
<add name="NameOfYourRoleProvider" type="Namespace.To.Your.Class.And.Class.Name, Name.Of.Assembly.Containing.Your.RoleProvider" />
</providers>
</roleManager>
有一點要記住的是,RoleProvider
實例由底層asp.net創建因此您需要通過HttpContext.Current.Session
訪問會話數據(並且在使用前檢查HttpContext.Current
不爲空),這需要您的提供商的代碼中有using System.Web;
。
您的問題不太清楚,但如果你想提供自己的邏輯來決定一個用戶屬於,那麼你可以做如下什麼樣的角色:
在這兩種方法填寫以下使用自己定製的邏輯:
public class MyRoleProvider : System.Web.Security.RoleProvider
{
public override string[] GetRolesForUser(string username)
{
// check a database or an xml file etc.
}
public override bool IsUserInRole(string username, string roleName)
{
// check a database or an xml file etc.
}
}
然後,添加下面給你的web.config:(根據自己的名稱替換值)
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear />
<add name="MyRoleProvider" type="MyNameSpace.MyRoleProvider, MyProjectOrAssemblyName" />
</providers>
</roleManager>