再现理想 发表于 2015-1-16 22:46:42

ASP.NET编程:asp.net身份考证和受权

另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。asp.net明天闲着无聊.想起来了ASP.NET身份考证.感到优秀.贴出以下代码:
login.aspxHTML代码

1<%@Pagelanguage="c#"Codebehind="02Login.aspx.cs"AutoEventWireup="false"Inherits="身份考证._02Login"%>
2<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
3<HTML>
4<HEAD>
5<title>02Login</title>
6<metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1">
7<metaname="CODE_LANGUAGE"Content="C#">
8<metaname="vs_defaultClientScript"content="javascript">
9<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
10</HEAD>
11<bodyMS_POSITIONING="GridLayout">
12<formid="Form1"method="post"runat="server">
13<FONTface="宋体">
14<TABLEid="Table1"style="Z-INDEX:102;LEFT:152px;WIDTH:446px;POSITION:absolute;TOP:80px;HEIGHT:72px"
15cellSpacing="1"cellPadding="1"width="446"border="1">
16<TR>
17<TD>
18<asp:labelid="Label1"runat="server">用户称号:</asp:label></TD>
19<TD>
20<asp:textboxid="tbName"runat="server"Width="183px"></asp:textbox></TD>
21<TD>
22<asp:requiredfieldvalidatorid="RequiredFieldValidator1"runat="server"ErrorMessage="用户名不克不及为空!"ControlToValidate="tbName"></asp:requiredfieldvalidator></TD>
23</TR>
24<TR>
25<TD>
26<asp:labelid="Label2"runat="server">暗码:</asp:label></TD>
27<TD>
28<asp:textboxid="tbPass"runat="server"Width="183px"></asp:textbox></TD>
29<TD>
30<asp:requiredfieldvalidatorid="RequiredFieldValidator2"runat="server"ErrorMessage="暗码不克不及为空!"ControlToValidate="tbPass"></asp:requiredfieldvalidator></TD>
31</TR>
32<TR>
33<TD><FONTface="宋体">是不是保留Cookie</FONT></TD>
34<TD>
35<asp:checkboxid="PersistCookie"runat="server"></asp:checkbox></TD>
36<TD></TD>
37</TR>
38</TABLE>
39<asp:buttonid="btnLoginBetter"style="Z-INDEX:101;LEFT:288px;POSITION:absolute;TOP:240px"
40runat="server"Width="78px"Text="登录"></asp:button>
41<asp:HyperLinkid="HyperLink1"style="Z-INDEX:103;LEFT:456px;POSITION:absolute;TOP:240px"
42runat="server"NavigateUrl="Default.aspx">HyperLink</asp:HyperLink></FONT>
43</form>
44</body>
45</HTML>
login.aspx.cs代码以下
privatevoidbtnLoginBetter_Click(objectsender,System.EventArgse)
{
if(this.tbName.Text=="admin"&&this.tbPass.Text=="admin")
{
FormsAuthenticationTicketticket=newFormsAuthenticationTicket(1,this.tbName.Text,DateTime.Now,DateTime.Now.AddMinutes(30),this.PersistCookie.Checked,"User");//创立一个考证单子
stringcookieStr=FormsAuthentication.Encrypt(ticket);举行加密
HttpCookiecookie=newHttpCookie(FormsAuthentication.FormsCookieName,cookieStr);创立一个cookie,cookie名为web.config设置的名,值为加密后的数据cookieStr,
if(this.PersistCookie.Checked)//判别用户是不是选中保留cookie
cookie.Expires=ticket.Expiration;//猎取cookie过时工夫
cookie.Path=FormsAuthentication.FormsCookiePath;//设置cookie保留路径
Response.Cookies.Add(cookie);
stringstrRedirect;
strRedirect=Request["ReturnUrl"];//掏出前往url
if(strRedirect==null)
strRedirect="Default.aspx";
Response.Redirect(strRedirect,true);
}
else
{
Response.Write("<script>alert(帐号或暗码毛病!);self.location.href=02login.aspx</script>");
}
}


Default.aspx HTML代码
<bodyMS_POSITIONING="GridLayout">
<formid="Form1"method="post"runat="server">
<FONTface="宋体">
<asp:Labelid="Label1"style="Z-INDEX:106;LEFT:224px;POSITION:absolute;TOP:72px"runat="server">用户称号:</asp:Label>
<asp:Labelid="Label2"style="Z-INDEX:102;LEFT:220px;POSITION:absolute;TOP:136px"runat="server">身份:</asp:Label>
<asp:Labelid="lbUser"style="Z-INDEX:103;LEFT:350px;POSITION:absolute;TOP:79px"runat="server"></asp:Label>
<asp:Labelid="lbSf"style="Z-INDEX:104;LEFT:355px;POSITION:absolute;TOP:133px"runat="server"></asp:Label>
<asp:Buttonid="btnLogout"style="Z-INDEX:105;LEFT:261px;POSITION:absolute;TOP:192px"
runat="server"Text="刊出"Width="101px"></asp:Button></FONT>
</form>
</body>
后置代码
privatevoidPage_Load(objectsender,System.EventArgse)
{
this.lbUser.Text=User.Identity.Name;
if(User.IsInRole("Admin"))
this.lbSf.Text="Admin";
else
this.lbSf.Text="User";
}
Web窗体计划器天生的代码#regionWeb窗体计划器天生的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该挪用是ASP.NETWeb窗体计划器所必须的。
//
InitializeComponent();
base.OnInit(e);
}

/**////<summary>
///计划器撑持所需的办法-不要利用代码编纂器修正
///此办法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.btnLogout.Click+=newSystem.EventHandler(this.btnLogout_Click);
this.Load+=newSystem.EventHandler(this.Page_Load);
}
#endregion
privatevoidbtnLogout_Click(objectsender,System.EventArgse)
{
FormsAuthentication.SignOut();//刊出票
Response.Redirect("login.aspx",true);前往login.aspx页面
}

webconfig设置以下
<authenticationmode="Forms">
<formsname=".SecurityDemo"loginUrl="login.aspx">//.SecurityDemo为cookie名,
</forms>
</authentication>
<authorization>
<denyusers="?"/>//回绝一切匿名用户
<allowroles="admins"/>//同意办理级别用户会见
</authorization>
自我感到ASP写多了,通常为用session举行判别用户是不是正当,但在一个ASP.NET项目中利用身份考证,基础上一切页面都要考证才干会见,感到有点迁强.但能够在web.config页面临指定的页面设置权限,设置代码以下
<locationpath="admin.aspx">
<system.web>
<authorization>
<denyusers="?"/>
</authorization>
</system.web>
</location>
假如只要几个页面设置如上代码,感到还能够承受.但页面多了岂不是要把人累逝世呀..
多是小的项目做多了,年夜项目没打仗过.请妙手给指导详细用处呀.不甚感谢
如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。

小女巫 发表于 2015-1-17 20:31:04

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

蒙在股里 发表于 2015-1-21 07:48:06

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

愤怒的大鸟 发表于 2015-1-30 11:53:33

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

小魔女 发表于 2015-2-6 11:09:07

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

分手快乐 发表于 2015-3-4 20:08:52

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

若天明 发表于 2015-3-11 20:51:31

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

只想知道 发表于 2015-3-19 13:02:22

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

海妖 发表于 2015-3-28 03:24:07

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页: [1]
查看完整版本: ASP.NET编程:asp.net身份考证和受权