|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
就安全性而言,Java已经远远低于VB.NET,更无法与安全性著称的C#相比。平安 好简单在沉重的开辟义务之余抽出点工夫进修一些器材。发明机子里有几个关于System.Security内容的示例,这一个定名空间之前还真是历来没用过,恰好拿来进修一下。因为不是体系的进修,欠好构造,想了想,就以示例来讲明吧。
1、设定权限
1[FileIOPermission(SecurityAction.Demand,Write="C: emp.txt")]
2publicclassApp:System.Windows.Forms.Form
3{
4//略
5}
FileIOPermissionAttribute界说于System.Security.Permissions里。它承继于SecurityAttribute,在这个例子中,请求利用App类时必需具有对C: emp.txt文件的写权限。
.netframework的文档中关于平安请求有如许一段话:“若要确保只要被授与了指定权限的挪用刚刚可以挪用您的代码,能够声明体例或强迫体例请求您的代码的挪用方具有特定的权限或权限集。请求使运转库实行平安反省,从而对换用代码实行限定。在平安反省过程当中,运转库遍历挪用仓库,反省仓库中每一个挪用方的权限,然后断定是不是已将请求的权限授与每一个挪用方。假如发明某个挪用方没有请求的权限,则平安反省失利,并激发SecurityException。”
例子中,权限是以声明的体例呈现的。SecurityAction.Demand能够感化于类或办法,在这里是感化于类上。Write是FileIOPermission的属性之一,别的经常使用属性另有Read、Append、All等等。
SecurityAction列举中另有一些值是感化于assembly上的。好比以下的例子:
[assembly:SecurityPermission(SecurityAction.RequestMinimum,UnmanagedCode=true)]
SecurityAction.RequestMinimum是哀求运转的最小权限。这一行请求程序集同意挪用非托管代码。
除声明体例外,还可使用强迫体例。以下的代码:
1FileIOPermissionfilePerm=newFileIOPermission(FileIOPermissionAccess.AllAccess,"C: emp.txt");
2try
3{
4filePerm.Demand();
5
6//Codetoaccessfilegoeshere
7}
8catch(SecurityExceptionexcep)
9{
10MessageBox.Show(excep.Message);
11return;
12}
13
2、用户脚色办理
用户及其脚色的办理是在很多程序中都要利用到的。现在asp.net2.0关于这方面有了年夜年夜加强,开辟职员不必要很懂得手艺就能够做出很不错的使用。不外关于WindowsForm使用程序来讲,很多中央还必要程序员本人设定。
假定我们已晓得了userName和它所属于的roles,那末能够如许来设置以后线程的Principal:
1GenericIdentitygenIdent=newGenericIdentity(userName);
2GenericPrincipalgenPrin=newGenericPrincipal(genIdent,roles);
3Thread.CurrentPrincipal=genPrin;
4
随后我们有三种举措来举行用户脚色考证。
第一种办法是利用GenericPrincipal.IsInRole办法:
1GenericPrincipalcurrentPrin=Thread.CurrentPrincipalasGenericPrincipal;
2
3if(currentPrin!=null&¤tPrin.IsInRole("Manager"))
4{
5//略
6}
7
第二种办法则是利用PrincipalPermission类,相似于权限设定中的强迫体例:
1PrincipalPermissionprinPerm=newPrincipalPermission(null,"Manager");
2
3try
4{
5prinPerm.Demand();
6
7//dosomething
8}
9catch
10{
11//errorhandling
12}
第三种体例则相似于权限设定中的声明体例:
1privatevoidDecPermButton_Click(objectsender,System.EventArgse)
2{
3try
4{
5performManagerAction();
6//dosomething
7}
8catch
9{
10//errorhandling
11}
12}
13
14[PrincipalPermission(SecurityAction.Demand,Role="Manager")]
15voidperformManagerAction()
16{
17}
关于平安的另外一个主要内容是加密。明天没空写了,改天再说。
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库) |
|