深入討論VB.NET權(quán)限控制
由微軟推出的一款面向?qū)ο蟮拈_(kāi)發(fā)語(yǔ)言VB.NET在開(kāi)發(fā)領(lǐng)域中占據(jù)著重要的作用。其中有很多內(nèi)容值得我們?nèi)ド钊胙芯俊B.NET權(quán)限控制是一個(gè)值得深入討論的問(wèn)題,我采用的方式是用FORM認(rèn)證的方法,具體的用戶(hù)信息,權(quán)限是放在數(shù)據(jù)庫(kù)中,并沒(méi)有集成WINDOWS的域認(rèn)證,實(shí)現(xiàn)的時(shí)候用專(zhuān)門(mén)的層來(lái)執(zhí)行權(quán)限判斷,利用GeneralPrincipal 和GeneralIdentity對(duì)象 。
VB.NET權(quán)限控制代碼片段如下:
- Public Function CheckRole
(ByVal strRole As String)
As Boolean- Return privateUserPrincipal.
IsInRole(strRole)- End Function
- Private Sub InitPrincipal()
- Try
- privateUserIdentity = New
GenericIdentity(privateUserName)- privateUserPrincipal = New
GenericPrincipal(privateUserI
dentity, privateUserRoles)- Catch e As Exception
- Throw New Exception("an error
occurred setting credentials")- End Try
- End Sub
- Private Sub SavePrincipal()
- Try
- If Not IsNothing(_context) Then
- context.Session("UserName") =
privateUserIdentity.Name- context.Session("Roles") =
privateUserRoles- context.User =
privateUserPrincipal- End If
- Catch e As Exception
- Throw e
- End Try
- End Sub
這樣一來(lái)當(dāng)界面變成WINDOWS的FORM是就不需要改動(dòng)很多代碼了,同時(shí)為了解決將權(quán)限放到SESSION中引起的延時(shí)問(wèn)題,我將用戶(hù)的VB.NET權(quán)限控制信息放在服務(wù)端的XML文件中,然后直接中XML文件中獲得數(shù)據(jù),任何對(duì)用戶(hù)信息的修改都將改變相應(yīng)的XML文件,這樣的效率高于從數(shù)據(jù)庫(kù)獲得。
當(dāng)然在實(shí)際開(kāi)發(fā)中還會(huì)碰到很多其他問(wèn)題,如報(bào)表,打印,并發(fā)性等。
【編輯推薦】