dotnetnuke应用程序中的第一个也是最后一个事件

时间:2011-04-19 13:58:46

标签: c# asp.net dotnetnuke

当用户登录并注销dnn应用程序时,我必须添加一些逻辑。但我不想在dnn中更改登录模块或任何内容。有什么事我能抓到吗?

2 个答案:

答案 0 :(得分:3)

您可以告诉DNN在登录和注销时重定向到特殊页面。

访问管理员 - >用户帐户 - >用户设置

enter image description here

您可能希望将它们重定向到“LoginSuccess.aspx”页面,该页面包含您在其上构建的自定义模块,该页面执行以下操作:

  • 在用户登录时执行自定义逻辑
  • 将用户重定向到有用的页面

您可以对用户注销执行相同的操作。如果您愿意,可以使用与登录相同的页面和相同的模块进行注销 - 您只需要检查当前用户是否经过身份验证,以确定要执行的逻辑和重定向的页面到。

专用LoginSuccess页面的步骤摘要

  1. 创建名为LoginSuccess.aspx的DNN页面
  2. 编辑页面设置:不显示在菜单中,站点地图优先级为0,仅供经过身份验证的用户查看
  3. 创建一个自定义DNN模块,用于在用户登录时执行自定义逻辑
  4. 将模块放到此页面上
  5. 确保在完成自定义逻辑处理后将用户重定向到某个地方
  6. 冲洗并重复注销

    我不知道此方法是否允许您在登录/注销之前将用户重定向到他们所在的最后一页。如果我不得不猜测,我猜你会失去这个功能。

    如果您在用户注销时遇到问题,确定谁刚刚注销,可以通过在用户登录时将UserID保存到会话状态来解决(在上面的自定义登录DNN模块中)。类似于:Session(“UserID”)=“当前用户ID”

    处理特殊情况

    确保限制包含这些登录/注销处理模块的这些“特殊页面”以执行以下操作:

    • 不包含在导航中
    • Sitemap优先级为0

    如果由一个女性/恼人/丢失的用户或机器人手动访问,您可能希望您的“注销处理器”模块执行以下操作(例如:用户直接导航到MySite / ProcessLogout.aspx):

    • 如果您的登出模块被访问但会话(“UserID”)什么都没有,那么重定向到该站点的主页并且不处理您的自定义用户登出逻辑。

    我相信这会回答你的问题,但也许不是你希望的方式。我没有像@capdragon建议的那样在没有修改DNN核心的情况下找到一个你可以简单处理的事件。如果你采用这种方法,请务必对其进行极好的评论并修改代码,使其成为复制粘贴的问题,以便部署到DNN的未来版本(例如,每次升级DNN时)

答案 1 :(得分:-2)

我会修改cmdLogin_Click()并向你的班级添加一个调用。

我过去做过。该页面根本不会改变。