在Dotnetnuke可以创建多个子站点,但遗憾的是,在用户只能在注册的子站点登录,而不能在其他子站点登录。
比如在下图,用户在子站点Portal 0注册后,就只能在Portal 0中登录,当访问子站点Portal 7时还需要重新注册和登录。
其实DotNetNuke多个子站点的用户都是在Users表中维护,只是通过UserPortals表识别用户是在哪个子站点上注册。如下图,
解决方案:
当新用户注册时,同时在其他子站点注册,即:在UserPortals增加相关记录。
参考代码:
修改AddUser存储过程,黄色部分为新增加代码。如下:
…… …… IF @IsSuperUser = 0 BEGIN IF not exists ( SELECT 1 FROM UserPortals WHERE UserID = @UserID AND PortalID = @PortalID ) BEGIN INSERT INTO UserPortals ( UserID, PortalID, Authorised)-- VALUES (@UserID,@PortalID,@Authorised)SELECT @UserID,PortalID,@Authorised FROM portals END END …… ……
修改UpdateUser存储过程,如下
局限:
- 修改后无法创建子站点,请先创建子站点后,再修改该存储过程。
- 只能对新注册用户实现多站点统一登录,对于修改前的老账号需要手工调整,直接增加记录即可。
以上代码在Dotnetnuke4.*上测试通过