基于角色的安全性(一) (转)

基于角色的安全性(一) (转)[@more@]

基于角色的安全性(一)

Montaque

  在财务或商务应用程序中经常使用角色来强制策略。例如,应用程序可能根据提出请求的用户是否是指定角色的成员,对正在处理的事务的大小加以限制。职员有权处理的事务可能小于指定的阈值,主管拥有的权限可能比职员的高,而副总裁的权限可能还更高(或根本不受限制)。当应用程序需要多个批准完成某项操作时,也可以使用基于角色的安全性。例如一个采购系统,在该系统中,任何雇员均可生成采购请求,但只有采购代理人可以将此请求转换成可发送给供应商的采购订单。(MSDN原话)XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  有时候,我们需要判断执行当前Sub的用户要求有一定的权限,最基本的比如说必须是windows中的管理员级别的帐户,这时候我们就要判断执行当前线程用户的角色问题。我们知道多个应用程序域可以在一个进程中运行;但是,在应用程序域和线程之间没有一对一的关联。多个线程可以属于一个应用程序域,尽管给定的线程并不局限于一个应用程序域,但在任何给定时间,线程都在一个应用程序域中执行。

于是我们就要从线程入手,我执行当前线程的用户信息加到执行环境中,在.NET中有一个类,Appdomain。下面给出一个简单的例子:

Imports System

Imports System.Threading

Imports System.Security

Imports System.Security.PeRmissions

Imports System.Security.Principal

 

Module OnlyAdmin

  Sub Main()

  '将用户的角色和标识跟windows关联起来。    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)

  Dim user As WindowsPrincipal = CType(Thread.CurrentPrincipal, WindowsPrincipal)

  Console.WriteLine("Hello {0}", user.identity.Name)

  If user.IsInRole(WindowsBuiltInRole.Administrator) Then

  Console.WriteLine("You can execute this program")

  Else

    Console.WriteLine("Sorry you cannot execute this program")

  End If

  End Sub

End Module

vb.net版本

参考:ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemappdomainclasstopic.htm


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-976611/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752019/viewspace-976611/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值