深入讨论VB.NET权限控制

由微软推出的一款面向对象的开发语言VB.NET在开发领域中占据着重要的作用。其中有很多内容值得我们去深入研究。VB.NET权限控制是一个值得深入讨论的问题,我采用的方式是用FORM认证的方法,具体的用户信息,权限是放在数据库中,并没有集成WINDOWS的域认证,实现的时候用专门的层来执行权限判断,利用GeneralPrincipal 和GeneralIdentity对象 。

VB.NET权限控制代码片段如下:

 
 
 
  1. Public Function CheckRole
    (ByVal strRole As String) 
    As Boolean  
  2. Return privateUserPrincipal.
    IsInRole(strRole)  
  3. End Function  
  4. Private Sub InitPrincipal()  
  5. Try  
  6. privateUserIdentity = New 
    GenericIdentity(privateUserName)  
  7. privateUserPrincipal = New 
    GenericPrincipal(privateUserI
    dentity, privateUserRoles)  
  8. Catch e As Exception  
  9. Throw New Exception("an error 
    occurred setting credentials")  
  10. End Try  
  11. End Sub  
  12. Private Sub SavePrincipal()  
  13. Try  
  14. If Not IsNothing(_context) Then  
  15. context.Session("UserName") = 
    privateUserIdentity.Name  
  16. context.Session("Roles") = 
    privateUserRoles  
  17. context.User = 
    privateUserPrincipal 
  18. End If  
  19. Catch e As Exception  
  20. Throw e  
  21. End Try  
  22. End Sub 

这样一来当界面变成WINDOWS的FORM是就不需要改动很多代码了,同时为了解决将权限放到SESSION中引起的延时问题,我将用户的VB.NET权限控制信息放在服务端的XML文件中,然后直接中XML文件中获得数据,任何对用户信息的修改都将改变相应的XML文件,这样的效率高于从数据库获得。

当然在实际开发中还会碰到很多其他问题,如报表,打印,并发性等。

【编辑推荐】

  1. VB.NET异常处理突破局限性
  2. VB.NET事务处理手工实行方式
  3. VB.NET业务层实现业务与逻辑
  4. VB.NET数据实体层实现方案介绍
  5. VB.NET MDI子窗体实例化问题解决方案
THE END