【威尼斯手机平台】本文来自《ASP.NET AJAX程序设计 第II卷,显示页面中的登录表单如图2-16所示
分类:威尼斯手机平台

报到表单的HTML代码如下:

正文来源《ASP.NET AJAX程序设计 第II卷:顾客端Microsoft AJAX Library相关》的第五章《应用程序服务和本地化》。

将上述代码保存为login.php文件并在浏览器中运转,展现页面中的登陆表单如图2-16所示。

 

图2-16 显示页面包车型大巴报到表单

让大家经过编写制定贰个总体的现身说法程序学习如何安顿并动用ASP.NET AJAX的AuthenticationService对象来促成客户登陆和收回。

5.2.1 启用身份认证应用程序服务

若想在大家的Web应用程序中动用ASP.NET 2.0内建的身份验证服务,首先正是在web.config文件中启用该服务。在web.config文件的<configuration /><system.web />节下增多如下一段配置:

<authentication mode="Forms">

  <forms cookieless="UseCookies" loginUrl="~/AuthenticationServiceDemo.aspx"/>

</authentication>

像这种类型即为该Web站点启用了身价认证应用程序服务,且设置验证的档案的次序为Forms,即表单认证。loginUrl设置了Web站点的记名页面,这里的~/AuthenticationService德姆o.aspx正是本示例程序的页面名称,约等于说,若顾客的权力远远不足访问网址内的某个页面,ASP.NET会活动将顾客重定向。

参照他事他说加以考查:越多关于ASP.NET 2.0内建的身价评释服务的剧情,请仿效那篇MSDN文章:《Authentication in ASP.NET: .NET Security Guidance》(

若想在顾客端JavaScript脚本中平昔利用AuthenticationService对象实现客商登陆和撤回,大家还亟需对ASP.NET AJAX实行配置。相通是在web.config文件中,在<configuration />节下加多如下配置:

<system.web.extensions>

  <scripting>

    <webServices>

      <authenticationService enabled="true" />

    </webServices>

  </scripting>

</system.web.extensions>

里面将<authenticationService/>节中的enabled属性设置为true之后,就可以在顾客端脚本中央直属机关接待上访谈到ASP.NET 2.0的身份认证服务。

提示:更加多关于ASP.NET AJAX的配置的介绍,请参见本书第I卷。

 

5.2.2 构造Membership数据库并创制客商

在ASP.NET 2.0内建的身价认证服务中,客商新闻寄放在Membership数据库中。在本机的machine.config配置文件(暗中认可地点为C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGmachine.config)中,我们能够找到如下一段:

<connectionStrings>

  <add name="LocalSqlServer" connectionString="data source=.SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />

</connectionStrings>

若你期待接受自定义的数据库寄存客户音讯,能够在本Web站点的web.config文件中<connectionStrings />一节增多相应的陈设成分。这里大家是因为演示的指标,将运用该暗中同意数据库。

参照他事他说加以考查:若想理解越多关于Membership数据库的连带内容,请参见那篇MSDN作品:《Configuring an ASP.NET Application to Use Membership》(

然后,在Visual Studio中采纳“Website | ASP.NET Configuration”菜单项,展开ASP.NET Web Site Administration Tool工具,早先分界面将如图5-1所示。

威尼斯手机平台 1

图5-1 ASP.NET Web Site Administration Tool的开首分界面

在该工具的“Security”选项卡中,大家来为本Web站点增加七个客商,便于稍后使用该顾客测量检验示例程序的记名/注销功用。这里大家创制的客商的客商名字为“Dflying”,密码为“p@ssword”。如图5-2所示。

威尼斯手机平台 2

图5-2 使用ASP.NET Web Site Administration Tool创制顾客

始建之后,Membership数据库中就包涵了几个名叫Dflying,密码为p@ssword的客户。请记住上述登陆音讯,稍后将在用到。

参照:若想驾驭使用ASP.NET Web Site Administration Tool成立顾客的亲力亲为步骤,请参见那篇MSDN小说:《Walkthrough: Creating a Web Site with Membership and User Login (Visual StudioState of Qatar 》(

参照他事他说加以考察:ASP.NET Web Site Administration Tool还提供了累累不行平价的保管ASP.NET站点的功力,请参谋那篇MSDN文章:《Web Site Administration Tool Overview 》(

 

5.2.3 创造受保障的目录

为了分裂登陆顾客和无名氏顾客的差别,我们接下去在该Web站点中开创三个受有限支撑的、当中内容只可以被报到用户访问的目录(名称为SecuredFolder),并在中间创造一张ASP.NET页面(名叫Default.aspx)和对应的web.config文件。图5-3出示了该目录在Visual Studio中的构造。

威尼斯手机平台 3

图5-3 Visual Studio中SecuredFolder目录的布局

为了在阻拦无名氏客商访谈该目录中页面包车型大巴还要,允许登入客商访谈,大家须要据守如下所示修正该目中的web.config文件,注意在那之中粗体部分:  

<configuration>

  <appSettings/>

  <connectionStrings/>

  <system.web>

    <authorization>

      <deny users="?"/>

      <allow users="*"/>

    </authorization>

  </system.web>

</configuration>

而受有限扶助的Default.aspx页面则特别不难,仅仅展现出一条表明音讯而已:

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Secured Page</title>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            Only authenticated users have access to this page.

        </div>

    </form>

</body>

</html>

上述配置之后,独有登入客商才可以访谈到SecuredFolder/Default.aspx页面,无名氏顾客若尝试访谈的话,将被重定向至~/AuthenticationServiceDemo.aspx页面。

 

5.2.4 示范程序的UI部分

做到了前头3小节的预备专业现在,大家好不轻易能够早先编写制定示例程序了。新建一张名字为AuthenticationService德姆o.aspx的ASP.NET页面,让后让我们从程序的UI部分动手——当然,ScriptManager控件总是少不了的:

<asp:ScriptManager ID="sm" runat="server" /> 

然后创制二个签到表单,该表单将展现给无名氏客商。个中包蕴八个文本框,分别用来输入客户名和密码,并提供了二个开关,用来触发客户登入操作。请在意登入表单和客商名/密码文本框的id,就要稍后的次第中用到:

<div id="loginPanel">

    <strong>Please Login</strong>

    <hr />

    <label for="tbUserName">User Name:</label>

    <input id="tbUserName" type="text" /><br />

    <label for="tbUserName">Password:</label>

    <input id="tbPassword" type="password" /><br />

<input id="btnLogin" type="button" value="Login" 

onclick="return btnLogin_onclick()" />

</div>

已报到顾客不拜看到上述表单,而会看出如下的打消面板。在那之中满含一个按钮,用来触发注销操作。同样要专心该面板的id:

<div id="logoutPanel">

    <strong>Welcome!</strong>

    <hr />

<input id="btnLogout" type="button" value="Logout" 

onclick="return btnLogout_onclick()" />

</div>

接下去加多二个<div />,将用来输出验证进度中的一些新闻,满含大概发生的老大:

<div id="result"> 

</div> 

聊起底增多三个超链接,指向前一小节中创设的受保险目录。已报到客户和无名氏客商都得以尝尝访谈该受敬爱目录,借此区分二者不相同的权力:

    Authenticated users have access to this folder: 

    <a href="SecuredFolder/">SecuredFolder/</a>

诸有此类即实现了本示例程序的UI部分。在Visual Studio的设计器中,完成后的程序界面将如图5-4所示。

威尼斯手机平台 4

图5-4 Visual Studio设计器中示范程序的分界面

 

5.2.5 演示程序的JavaScript代码部分

成就了前后相继的UI部分之后,大家来用JavaScript代码把各样UI成分协和、统一齐来,最后成功本示例程序。在页面中ScriptManager的现身岗位然后加多二个<script />标签,接下去全体的剧本内容均将置于该标签中:

<script type="text/javascript">

</script>

率先编写pageLoad(State of Qatar函数,该函数将要客商端应用程序加载达成后被ASP.NET AJAX顾客端框架自动调用:

function pageLoad(sender, args) {

    // 刷新登录面板和已登录用户面板的显示状态

    refreshLoginPanels();

}

在上述pageLoad(State of Qatar函数中,我们调用了别的二个名叫refreshLoginPanels(卡塔尔(قطر‎的函数。该函数用来依据当前客商是还是不是早就报到,决定页面中应有出示出多少个面板(登陆表单和裁撤面板)中的哪一个。refreshLoginPanels(卡塔尔(قطر‎的函数的代码如下,注意个中使用了AuthenticationService对象的isLoggedIn属性:

function refreshLoginPanels() {

    // 用户是否已经登录?

    var isLoggedIn = Sys.Services.AuthenticationService.get_isLoggedIn();



    // 刷新登录面板和已登录用户面板的显示状态

    $get("loginPanel").style.display = isLoggedIn ? "none" : "block";

    $get("logoutPanel").style.display = !isLoggedIn ? "none" : "block";

}

接下去设定一下AuthenticationService对象的3个暗中同意回调函数,那3个回调函数分别就要报到成功、注销完结以致调用败北时被调用:

Sys.Services.AuthenticationService.set_defaultLoginCompletedCallback(onLoginCompleted);

Sys.Services.AuthenticationService.set_defaultLogoutCompletedCallback(onLogoutCompleted);

Sys.Services.AuthenticationService.set_defaultFailedCallback(onAuthenticationFailed);

让大家挨个解析那3个回调函数的兑现。首先是登陆成功的回调函数——onLoginCompleted(卡塔尔国。此中先根据客商是或不是中标登入来显示出一段提示音讯,然后调用后边给出过的refreshLoginPanels(卡塔尔国函数更新三个面板的显得状态:

function onLoginCompleted(validCredentials, userContext, methodName) {

    // 根据用户是否成功登录,显示提示信息

    $get("result").innerHTML = 

        validCredentials ? "Logged in!" : "Incorrect UserName/Password!";



    // 刷新登录面板和已登录用户面板的显示状态

    refreshLoginPanels();

}

废除完毕的回调函数——onLogoutCompleted(卡塔尔(قطر‎与前面三个非常周围。雷同是先出示出提醒音讯,然后更新多少个面板的显得状态:

function onLogoutCompleted(result, userContext, methodName) {

    // 显示用户注销信息

    $get("result").innerHTML = "Logged out!"



    // 刷新登录面板和已登录用户面板的显示状态

    refreshLoginPanels();

}

调用退步时的回调函数——onAuthenticationFailured(卡塔尔(قطر‎的字数较长,不过逻辑上却特别轻巧——获得非常的详细音讯并出示给客商而已:

function onAuthenticationFailed(error, userContext, methodName) {

    // 取得异常信息

    var stackTrace = error.get_stackTrace();

    var message = error.get_message();

    var statusCode = error.get_statusCode();

    var exceptionType = error.get_exceptionType();

    var timeout = error.get_timedOut();



    // 显示异常信息

    $get("result").innerHTML = 

        "<strong>Error Occurs: </strong><br/>" +

        "<strong>Stack Trace: </strong>" +  stackTrace + "<br/>" +

        "<strong>Service Error: </strong>" + message + "<br/>" +

        "<strong>Status Code: </strong>" + statusCode + "<br/>" +

        "<strong>Exception Type: </strong>" + exceptionType + "<br/>" +

        "<strong>Is Timeout: </strong>" + timeout;

}

唤醒:出于演示的指标,本程序将十分的富有细节都毫无保留地出示了出来。而在其实应用程序中,大家全然未有须求这么“敦朴”地将把全副都告诉给客户。

“Login”按键的click事件管理函数的代码如下。该事件处理函数中只是轻巧地调用了AuthenticationService对象的login(卡塔尔方法,并将客户名和密码传送给服务器。注意第三个参数表示顾客的报到音信将以Cookie的样式保留下来,即便关闭后再次展开二个浏览器窗口,相仿也能够获得上次的记名音信:

function btnLogin_onclick() {

    Sys.Services.AuthenticationService.login(

        $get("tbUserName").value, 

        $get("tbPassword").value,

        true

    );

}

“图标ut”开关的click事件管理函数的代码如下,个中调用了AuthenticationService对象的logout(卡塔尔方法,用来注销当前的客商:

function btnLogout_onclick() {

    Sys.Services.AuthenticationService.logout();

}

出于我们在头里早就设定了AuthenticationService对象的3个暗中认可回调函数,所以在调用login(卡塔尔国和logout(卡塔尔国方法重返之后,AuthenticationService对象将活动依据当前景况选用并调用上述3个回调函数中的某三个。

到此停止,我们也完了了整整示例程序的编写。

 

5.2.6 运作示例程序

运作该示例程序,其初阶分界面将如图5-5所示。那个时候若是直接访问受保险的SecuredFolder目录,页面将被重定向回当前页面。

威尼斯手机平台 5

图5-5 示例程序的伊始分界面

输入客商名Dflying,密码p@ssword登陆,能够见到程序即能够Ajax格局开展异步登入。登陆后的分界面如图5-6所示,注意登陆表单被隐形,展现出了吊销面板。那时一经点击“Logout”按键,当前的客户将被收回,程序也将回来至图5-5所示的分界面。

威尼斯手机平台 6

图5-6 登陆后的程序分界面

当时再一次寻访受保障的SecuredFolder目录中的Default.aspx页面,就能够浏览到该页面包车型大巴从头到尾的经过,如图5-7所示。

威尼斯手机平台 7

图5-7 登入顾客能够访问受保证的SecuredFolder目录中的Default.aspx页面

假如在扩充身份认证时前后相继抛出了非常,大家也会看出这个的详细新闻。举例,改正一下“Login”开关的click事件处理函数的代码,将login(卡塔尔(قطر‎方法的第多个参数注释掉:

function btnLogin_onclick() {

    Sys.Services.AuthenticationService.login(

        $get("tbUserName").value, 

        $get("tbPassword").value//,

        // true

    );

}

再一次尝试登入,大家将看见程序展现出如图5-8所示的不得了消息。

威尼斯手机平台 8

图5-8 显示身份ID明时前后相继抛出的十分

经过那样多个完完全全的躬行实施程序,大家驾驭了利用ASP.NET AJAX的AuthenticationService对象完毕Ajax情势的客户登入和撤消的措施,若合理利用的话,定会为大家的Ajax应用程序增色不菲,给顾客登入/注销这一常用项景端来更为流畅的客商体验。


本文由威尼斯在线注册平台发布于威尼斯手机平台,转载请注明出处:【威尼斯手机平台】本文来自《ASP.NET AJAX程序设计 第II卷,显示页面中的登录表单如图2-16所示

上一篇:可根据需要安装 下一篇:威尼斯手机平台PHP Frameworks大全
猜你喜欢
热门排行
精彩图文