zoukankan      html  css  js  c++  java
  • (转 满目青山夕照明)配置个性化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 。诚然也适用于其他数据库字符串。 

  • 相关阅读:
    那些年读过的书《Java并发编程实战》和《Java并发编程的艺术》三、任务执行框架—Executor框架小结
    那些年读过的书《Java并发编程实战》二、如何设计线程安全类
    那些年读过的书《Java并发编程实战》一、构建线程安全类和并发应用程序的基础
    重读《深入理解Java虚拟机》七、探究Java内存模型
    重读《深入理解Java虚拟机》六、Java泛型 VS C#泛型 (伪泛型 VS 真泛型)
    重读《深入理解Java虚拟机》五、虚拟机如何执行字节码?程序方法如何被执行?虚拟机执行引擎的工作机制
    重读《深入理解Java虚拟机》四、虚拟机如何加载Class文件
    input 文本框禁止输入表情
    win7右下角无线网图标显示未连接,但是实际上已连接上,也能上网
    history.back(-1)和history.go(-1)的区别
  • 原文地址:https://www.cnblogs.com/chenfulai/p/620699.html
Copyright © 2011-2022 走看看