投递文章  投稿指南 RSS订阅 广东网盟在线通告:网站改版中,如有问题请到论坛交流...
本站搜索: 您的位置广东网盟 > 文章资讯 > 软件应用 > 编程开发 > ASP.net > 文章内容

Asp.Net安全验证小结

作者:佚名  来源:本站整理  发布时间:2008-5-15 15:00:39

1,基于windows的安全验证
   web.config文件:
   <configuration>
   <system.web>
   <authentication mode="Windows" />
   <identity impersonate="true" />
   <authorization>
   <allow roles="BUILTIN\groupname" users="computername\UserName,computername\UserName" />
   <deny users="*" />
   </authorization>

   </system.web>
   </configuration>
   在.aspx文件中无需任何代码就可以实现验证,但可以在.aspx文件获取登陆用户的信息
   需导入命名空间:System.Security.Principal
   if(User.Identity.IsAuthenticated)//判断用户是否验证,似乎可有可无
   {
   WindowsIdentity objWinIdentity=WindowsIdentity.GetCurrent();
   lblHelloMsg.Text="the name:"+objWinIdentity.Name+"<br>Type:"+ objWinIdentity.AuthenticationType+"IsInRole:"+User.IsInRole("computername\\groupname");
   }
  
  2,基于web.config forms验证
   web.config文件:
   <configuration>
  <system.web>
   <authentication mode="Forms">
   <forms name="MyApp" path="/" loginUrl="login.aspx"
   protection="All" timeout="30">
   <credentials passwordFormat="Clear">
   <user name="kwk" password="test" />
   <user name="ljx" password="test" />
   </credentials>
   </forms>
   </authentication>
  
   <authorization>
   <allow users="kwk,ljx" />
   <deny users="?" />
   </authorization>
  </system.web>
  </configuration>
   login.aspx文件:需要提供两个文本框用于填写用户和密码(txtUsr,txtPwd),一个单选框判断是否永久保存
   还需要一个按钮控件则响应该button的代码如下:
  void DoLogin(Object sender, EventArgs e)
  {
   if(FormsAuthentication.Authenticate(txtUsr.Value,txtPwd.Value))
   {
   FormsAuthentication.RedirectFromLoginPage(txtUsr.Value,chkPersist.Checked);
   }
   else
   //为代码完整性而设置,可以不写
   {
   Response.Write("authentication fails");
   }
  }
  然后在别的页面可以获得登陆用户的值:
  if(User.Identity.IsAuthenticated)//可以不需要判断
  {
   Response.Write("your name:"+User.Identity.Name);
   Response.Write("验证类型:"+User.Identity.AuthenticationType);//forms,windows
  }
  
  3,基于自定义forms验证
   web.config文件(基本上不需要什么设置):
   <system.web>
   <authentication mode="Forms">
   <forms name="MyApp" path="/" loginUrl="custom-login.aspx"
   protection="All" timeout="30" >
   </forms>
   </authentication>
  
   <authorization>
   <deny users="?" />
   </authorization>
   </system.web>
   custom-login.aspx文件,基本原理还是跟2中说的一样,如:
   if (blnIsAuthenticated) //注意这个blnIsAuthenticated是一个自己定义的变量
   //当我们把用户输入的信息和数据库(或xml)的信息比对,存在则把该变量设为true,反之false
   //这是跟2不一样的地方
   {
   FormsAuthentication.RedirectFromLoginPage(txtUsr.Value, chkPersist.Checked);
   //txtUsr和chkPersist分别为textbox,checkbox控件
   }
   else
   {
   //验证失败提示信息
   }
   剩下的如在其他页面获得用户信息,如2一样
  
  4,退出登陆
  响应退出登陆按钮的代码:
  FormsAuthentication.SignOut();
  Response.Clear();
  Response.Redirect(Request.UrlReferrer.ToString());//重定向到前一个页面

Tags:广东网盟  
  •         用户名: 验证码: 验证码,看不清楚请点击刷新验证码 (注“”为必填内容。)


    文章评论: [ 查看全部 ] 网友评论
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -