在D:\Delphi7\Demos\WebSnap\PhotoGallery中的这个websnap技术中,他只要在EndUserSessionAdapter1中设置logpage属性便能对未经过验证的网页进行自动转向到登录页面,我不知道他是通过什么道理能实现这样的功能的?
难道他是在html中写了什么代码,那这代码又是什么呢?
如果我在摸板是自己添加一个超级连接,未经过身份验证的也一样能跳出对话框显示,“请先登陆”,或直接跳转到该登录页又该如何写呢?
请高手帮忙。

解决方案 »

  1.   

    设置要求登录的页面    有了工作的登录页后,对那些需要访问控制的页,必须要求登录。得到要求登录的页的最容易的方法,是把需求设计到页中。在最初建立一个 Web 页模块时,在 New WebSnap Page Module 对话框的 Page 部分,选中 Login Required 框。
        如果已建立了一个没有要求登录的页,可以在以后修改:
    1. 在编辑器中打开与 Web 页模块关联的 .pas 文件。
    2. 滚动到 implementation 部分。在 WebRequestHandle.AddWebModuleFactory 命令的参数中,找到 TWebPageInfo 对象的构造器。它应当象这样:
    TWebPageInfo.Create([wpPublished{, wpLoginRequired}], '.html')
    3. 去掉参数列表的 wpLoginRequired 部分的注释,即删除花括弧。TWebPageInfo 构造器现在象这样:
    TWebPageInfo.Create([wpPublished, wpLoginRequired], '.html')
        要从一个页去除登录需求,使用相反的过程,并重新把构造器的“wpLoginRequired”注释掉。注意,可用相同的过程来使页发布或不发布,即按需要简单地添加或删除“wpPublished”部分的花括弧。
      

  2.   

    登录页
        当然,应用程序也需要一个登录页。在试图访问有权限的页的时候或之前,用户要输入他们的用户名和口令来验证身份。用户也能指定完成验证时收到哪个页面。如果用户名和口令与 Web 用户列表相匹配,则用户获得合适的访问权限,并进入在登录页面指定的页。如果用户未通过验证,可以重新显示登录页(缺省的行为)或可以发生其它行为。
        很幸运,通过使用 Web 页模块和 Adapter 页生成器,WebSnap 可很容易地建立简单的登录页面。要建立登录页面,从建立一个新的 Web 页模块开始。选择 File|New|Other,显示 New Items 对话框,然后从 WebSnap 窗格中选 WebSnap Module。选择 AdapterPageProducer 作为页生成器类型。再填写你需要的其它选项。为登录页起一个好的名称。
        现在应当添加最基本的登录页字段:用户名字段,口令字段,一个选择框给用户选择登录后收到哪个页,一个登录按钮用来提交页面及身份验证。要添加这些字段:
    1. 为建立的页模块添加一个 LoginFormAdapter 组件(可以从组件面板上的 WebSnap 窗格中找到)。
    2. 双击 AdapterPageProducer 组件显示 Web 页编辑器窗口。
    3. 右键点击左上角的 AdaterPageProducer,选择 New Component。在 Add Web Component 对话框中选择 AdapterForm 并点击 OK。
    4. 给 AdapterForm 添加一个 AdapterFieldGroup。(右键点击左上角的 AdapterForm,选择 New Component。在 Add Web Component 对话框中选择 AdapterFieldGroup 并点击 OK。)
    5. 现在到 Object Inspector 把 AdapterFieldGroup 的 Adapter 属性设置为 LoginFromAdapter。UserName,Password 和 NextPage 字段应自动出现在 Web 页编辑器的 Browse 窗格。
        因此,WebSnap 在几个简单步骤中处理大部分工作。登录页还缺少一个登录按钮,它把表单上的信息提交用于验证。添加一个登录按钮:
    1. 为 AdapterForm 添加一个 AdapterCommandGroup。在 Object Inspector 中把它的 DisplayComponent 属性值设置为 AdapterFieldGroup。
    2. 为 AdapterCommandGroup 添加一个 AdapterActionButton。
    3. 点击 AdapterActionButton(列在 Web 页编辑器的右上角),用 Object Inspector 把它的 ActionName 属性修改为 Login。在 Web 页编辑器的 Browse 窗格,可以看见一个登录页的预览。
        Web 页编辑器类似于下图显示。
        从 Web 页编辑器中看到的登录页例子:
     
        如果按钮未出现在 AdapterFieldGroup 下面,确定 AdapterCommandGroup 列在 Web 页编辑器的 AdapterFieldGroup 下面。如果 AdapterCommandGroup 出现在上面,选中它,并点击 Web 页编辑器的下向箭头(通常,Web 页元素出现的次序与它们在 Web 页编辑器中相同)。然后在 Object Inspector 中,把 AdapterCommandGroup 的 DisplayComponent 属性置为 AdapterFieldGroup。
        在登录页有功能之前,还需要多个步骤。需要指定在最终用户会话 Adapter(EndUserSessionAdapter)中指定哪个是登录页。在 Web 应用程序模块中选择 EndUserSessionAdapter 组件,在 Object Inspector 中,把 LoginPage 属性修改为登录页的名称。现在该登录页对 Web 服务器应用程序的所有页可用。