(转 满目青山夕照明)配置个性化webpart的办法

配置个性化webpart的办法

我们的目的是让每个用户都有自己的个性化空间,而只有管理员才能改变共享范围。
我们还将研究如何配置自己的SqlPersonalization提供者来储存个性化数据。

一、配置用户范围和共享范围的个性化
为了让用户范围和共享范围的个性化发挥作用,必须授权用户组可以个性化。缺省状态下所有用户可以使用用户范围,不允许用户改变共享范围。
缺省配置在下面目录的Web.Config里。

Windows\Microsoft.NET\Framework\v2.0.xxxxx\config\

缺省配置如

Listing 1 Web.Config
<webParts>
  <personalization>
  <authorization>
    <deny users="*" verbs="enterSharedScope" />
    <allow users="*" verbs="modifyState" />
  </authorization>
  </personalization>
</webParts>

第一个授权是防止用户进入共享范围。第二个授权是允许用户进入个性化webpart
为了授权管理员改变共享范围,需要覆盖缺省配置。如下:

Listing 2. Web.Config

<?xml version="1.0" encoding="utf-8"?>
                        <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
                        <system.web>
                        <webParts>
                        <personalization>
                        <authorization>
                        <allow users="*" verbs="modifyState" />
                        <allow roles="Administrators" verbs="enterSharedScope" />
                        </authorization>
                        </personalization>
                        </webParts>
                        </system.web>
                        </configuration>
                        

为了授权管理员改变共享范围,需要覆盖缺省配置。如下:

授权用户和角色以后,有两种方式展示个性化:初始化WebPartPersonalization类。如要缺省为共享范围,WebPartManager应为下面样式。


<asp:WebPartManager
  id="WebPartManager1"
  Personalization-InitialScope="Shared"
  Runat="server" />

如果用户授权进入共享范围,也可以改变共享范围。如果没有授权改变共享范围,页面只能保持用户范围的个性化。

页面已经Page PreInit时,就不能更改初始范围。 要改变只能用ToggleScope()方法,这是一种非常好的方法,只有把个性化管理器加进webpart,就可以在用户范围和共享范围之间切换。

二、配置个性化数据库

缺省情况下,个性化数据库存放在APP_Data 目录下一个名为ASPNETDB.mdf的SQL Server 2005 Express 数据库里。如果要采用其他数据库(SQL Server 2000 或者 SQL Server 2005),需要做两件事。
1. 建立数据库
2、修改应用web配置文件

对于第一个可执行下面目录的程序自动安装必要的数据库。

Windows\Microsoft.NET\Framework\v2.0.xxxxx\aspnet_regsql.exe

除了aspnet_regsql.exe外,还可以在相同目录下找到下面sql脚本

InstallCommon.sql --首先运行


InstallPersonalization.sql --然后再运行。


UninstallCommon.sql --卸载InstallCommon.sql

UninstallPersonalization.sql --卸载InstallPersonalization.sql.

完成了配置个性化数据库以后,还需要让web配置文件指向新的数据库。下例中我们把个性化数据库命名为AppData放在名为DataServer服务器上。

Listing 3. Web.Config

<?xml version="1.0" encoding="utf-8"?>
                        <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
                        <connectionStrings>
                        <add
                        name="DataServer"
                        connectionString="Server=DataServer;Trusted_Connection=true;
                        Database=AppData"/>
                        </connectionStrings>
                        <system.web>
                        <webParts>
                        <personalization defaultProvider="MyPersonalizationProvider">
                        <providers>
                        <add
                        name="MyPersonalizationProvider"
                        type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider"
                        connectionStringName="DataServer" />
                        </providers>
                        <authorization>
                        <allow users="*" verbs="modifyState" />
                        <allow roles="Administrators" verbs="enterSharedScope" />
                        </authorization>
                        </personalization>
                        </webParts>
                        </system.web>
                        </configuration>
                        


 

<webParts>节下面包含<personalization>分节。defaultProvider属性指向名为定义在<providers>节里的MyPersonalizationProvider。provider使用了SqlPersonalization以及名为“DataServer”数据库连接字符串。

DataServer连接字符串定义在配置文件上部指向服务器名为DataServer,数据库名为AppData 。诚然也适用于其他数据库字符串。 

原文地址:https://www.cnblogs.com/chenfulai/p/620699.html