国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.net的Membership,為什么就這么困難呢?

2019-11-18 17:03:43
字體:
來源:轉載
供稿:網友

asp.net 2.0出來以后,一直想用一下2.0的Membership,這個封裝的很好的網站權限管理工具。我采用的是SQLPRovider,用aspnet_regsql產生了所需要的表,并且配置了web.config,但是在實際使用中卻遇到了不少的問題,包括登錄以后通過Membership.GetUser()來獲取當前登錄的用戶,結果代碼返回給我的是null.....包括在webconfig中的認證和授權的設置,似乎也全然不起效果,經過一番搜索,還是無法解決這個問題,于是沒辦法,只能利用membership,但是卻自己實現整個認證授權的過程。

因為login控件不起作用,所以就自己寫了一個login.aspx的頁面,這個頁面通過Membership.ValidateUser()函數對用戶的登錄進行判斷,用戶成功登錄以后,將用戶的username保存到session中。

自己實現了一個xml序列化的可配置的對象,大致如一下的結構

<?xml version="1.0"?>
<SecurityConfig xmlns:xsi="<Allow Roles="Administrator" />
</PageLocation>
</PageLocations>
</SecurityConfig>

PageLocations是一個PageLocation的List對象集合,Pagelocation中location包含了所要加入權限的頁面。Pagelocation中的包含一個Allow對象,其中有一個屬性是Roles,包含頁面可授權的用戶角色,可以用逗號分割,這樣把所有的頁面加入到這個XML結構中。

然后實現如下的一個函數:

/// <summary>
/// 是否允許訪問該頁
/// </summary>
/// <param name="url">授權的路徑</param>
/// <param name="rolenames">授權角色</param>
/// <returns>是否獲得授權</returns>
public bool isAllow(Uri url,string[] rolenames,HttpContext context)
{
string path=context.Server.MapPath(url.AbsolutePath);
PageLocation theLocation = null;
foreach (PageLocation location in pageLocations)
{
string strlocation;
strlocation=context.Server.MapPath(location.Location);
if (strlocation.ToLower() == path.ToLower())
{
theLocation = location;
}
}
if (theLocation != null)
{
string[] roles = theLocation.Allow.Roles.Split(',');
foreach (string role in roles)
{
foreach (string rolename in rolenames)
{
if (rolename == role)
{
return true;
}
}
}
return false;
}
else
{
return false;
}

}

通過對當前訪問頁面的絕得路徑和xml中的絕得路徑進行比較,然后取得xml中描述的Pagelocation對象,從而判斷他Allow的Role是不是和當前的用戶的Role是不是匹配,從而來實現角色的安全授權。

由于我這個管理是用在一個后臺的安全管理上面,所以寫了一個用戶控件來封裝這個SecurityConfig 類,通過Context.Session[]來取得登錄的用戶賬號,然后通過Roles.GetRolesForUser(username)來取得登錄用戶的角色,然后將Context.Request.Url和roles一起傳入到剛才的函數中,如果用戶獲得授權就展示當前頁面,不然就跳轉到自己得登錄頁面或者提示你無此權限。

由于我使用了MasterPage,所以對于這種情況我只要把這個控件綁定到masterpage上,這樣每個頁面就都在管理中了,并且在后臺寫一個對這個SecurityConfig 對象得編輯和序列化得頁面,就實現了對所有頁面得權限控制。

對于采用這種方式,也是在玩不靈Membership時候得一個下策,這樣即利用了Membership提供得關于用戶得如CreateUser,CreateRoles這些基本功能,又滿足了對權限設置得需要,現在也只能這么處理了。

第一次在首頁投稿,另外希望哪位朋友能告訴我什么情況下.net得授權會不靈。

http://m.survivalescaperooms.com/livesite/archive/2006/08/14/membership.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 犍为县| 湟源县| 观塘区| 海丰县| 福建省| 司法| 丹阳市| 偃师市| 常德市| 临清市| 开原市| 临朐县| 扶风县| 长春市| 霍城县| 乌审旗| 舟山市| 湖南省| 清丰县| 宁阳县| 漠河县| 密云县| 连云港市| 宁城县| 永宁县| 白玉县| 吉林市| 长沙县| 合山市| 万全县| 万年县| 高州市| 泸西县| 客服| 祥云县| 德清县| 铜川市| 星子县| 托里县| 柳河县| 梧州市|