当MOSS离开了域环境

     最近找房,搬家,北漂的生活不容易啊~!言归正传,刚开始接触SharePoint,大家也许都老老实实的装域,再装SharePoint。为什么要装域呢?这里就不解释了,大家有兴趣可以查查。想要把SharePoint实现商业价值,在域里实现?很有限,所以脱离域的范围是迟早的事情,都知道SharePoint是做网站的,只在域里做,那咱们还是回去用Asp.net写吧,方便多了。呵呵~

     SharePoint脱离了域,用户和管理员怎么办?都知道,在域环境下,SharePoint是基于域用户登陆的,现在没有域了,如何实现管理网站和登陆网站呢?MS也是早想好了:SharePoint管理中心里Application Management下的Authentication Provider选项,进入Edit Authentication 可以看到SharePoint的三种用户认证方式:windows认证,Forms认证,用户单点登录。域环境下,默认的是windows认证,脱离域后再继续用windows认证?所有用户信息存在windows的用户中?以后所有网站用户都是你服务器Windows的用户,不敢想象。Form认证,名字听起来都不错,咱们Asp.net不都是提交表单,验证表单吗?应该符合咱们的需求~

     1.创建数据库:VS2008的控制台中输入aspnet_regsql创建数据库,目的,有个存放你站点用户信息的数据库。(会生成一个aspnetdb的数据库)

     2.创建表单:这个大家都是老手了,你不可能对C#不了解就研究SharePoint吧,所以我就简单介绍下。创建一个Asp.net的Web Application,目标:一个注册表单,一个登录表单,和一个确定登录成功后的显示页。也就是3个Web Form页面,注册页放个CreateUserWizard控件,登录页放个Login控件,登录成功显示页放个LoginName控件。下面才是关键:在当前VS2008项目的Project选项中,点击最下面的ASP.NET Configuration,会打开一个Web Site Administration Tool页面,点击Security页,选择Users 分类中的 Select authentication type,进入用户认证类型选择,选择 From the Internet。

     3.创建数据库连接:这里需要修改3个Web.config。当前站点,vs2008当前注册登录项目,站点所属的Application3个config文件。(这里我会顺带的把注册站点用户时的简单密码设置和自动分配权限一起讲了)

     * vs2008 Web.config:其中,connectionStrings 节点是新加的,注册后自动分配权限和简单密码的设置需要放到<system.web>节点下。这里主要解释下简单密码注册中的一些设置,minRequiredPasswordLength="4"  表示MemberShip中密码最少为4位,需要设置几位自己可以任意修改,默认为7;minRequiredNonalphanumericCharacters="0" 表示为密码中非数字字符的数量,也就是是否需要密码 字母加数字这种模式,默认为1;

 

<!--简单密码连接-->
  
<connectionStrings>
    
<add name="LocalConnectionString" connectionString="Server=(local);Database=aspnetdb;Trusted_Connection=True"/>
  
</connectionStrings>
  
    
<system.web>

      
<!--注册后自动分配权限-->
      
<roleManager enabled="true">
        
<providers>
          
<clear />
          
<add name="AspNetSqlRoleProvider"
           connectionStringName
="LocalConnectionString"
           type
="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        
</providers>
      
</roleManager>
      
      
<!--实现简单密码注册--> 
      
<membership>
        
<providers>
          
<clear/>
          
<add name="AspNetSqlMembershipProvider"
              connectionStringName
="LocalConnectionString"
              minRequiredPasswordLength
="4"
              minRequiredNonalphanumericCharacters
="0"
              type
="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        
</providers>
      
</membership>

      * 当前站点的Web.config:几乎与上面一样,连接有点区别。

 

 

<connectionStrings>
    
<remove name="LocalSqlServer" />
    
<add name="LocalSqlServer" connectionString="Server=(local);Database=aspnetdb;Trusted_Connection=True" providerName="System.Data.SqlClient" />
  
</connectionStrings>
  
<system.web>
    
<!--注册后自动分配权限-->
    
<roleManager enabled="true">
      
<providers>
        
<clear />
        
<add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      
</providers>
    
</roleManager>
    
<membership>
      
<providers>
        
<clear />
        
<add name="AspNetSqlMembershipProvider" connectionStringName="LocalSqlServer" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      
</providers>
    
</membership>

     * 站点所属Application的Web.config:只需要添加个数据库连接。

 

<connectionStrings>
    
<remove name="LocalSqlServer"/>
    
<add name="LocalSqlServer" connectionString="Server=(local);Database=aspnetdb;Trusted_Connection=True" providerName="System.Data.SqlClient"/>
  
</connectionStrings>

 

     上面所加的数据库连接节点,都跟<system.web>节点同级,其他的修改都在该节点下,请小心位置。

     4.修改管理中心:SharePoint管理中心里Application Management下的Authentication Provider选项,进入Edit Authentication,将Authentication Type修改为Froms认证方式;Membership provider name 中填写为MembershipName:AspNetSqlMembershipProvider;Role manager name为:AspNetSqlRoleProvider。保存设置。

     运行VS2008项目下的注册页面,注册一个新用户,注册成功后,进入SharePoint管理中心里Application Management 下的Site collection administrators,选择你当前使用的SharePoint站点,将你注册的用户名输入,该用户将成为脱离域环境后站点的管理员。

     再次打开当前VS2008项目的Project选项中,点击最下面的ASP.NET Configuration,会打开一个Web Site Administration Tool页面,点击Security页,Roles分类中 点击 Create or Manage roles,Create New Role 中 添加一个Role的名称(任意名字都行).

     打开SharePoint站点,Form认证后,出现一个登录页面,使用之前注册的用户名登陆,在站点用户和群组设置中,自己创建一个新的组也行,使用SharePoint默认的组也行,将你添加的Role的名称添加到组中,目的:你默认用户注册后就拥有该组所拥有的权限了~

     最后一步:必不可少,要不跟您的Membership Role连接不上哦~!VS2008项目下,注册页面,为CreateUserWizard控件添加一个CreatedUser事件,该事件中代码如下:

 

 

Roles.AddUserToRole(CreateUserWizard1.UserName, "您的Role名称");

 

如果不加,用户登录后无任何权限,只能浏览页面最基本信息.

      5.小结:现在,运行注册,任意注册用户后,不用再去SharePoint的用户管理里去添加用户,用户自动会拥有一定的权限,如果需要提升权限,那就只有交给管理员操作了.Form认证后,所有操作不受任何影响,而且工作组里的同事,朋友,都能看到你的网站,最方便的是自己机器能上网了~(俺没有装虚机~).目前所知,SharePoint Designer会有点点小麻烦,不过已经有达人解决了,就是登陆的时候把Sign me in automatically勾上就没有问题了~!已经测试过了!

     注册页面要想加到SharePoint中,做成webPart吧,方便,快捷,居家旅行必备!大家还有什么疑问或意见,联系我~!留点体力,继续搬家,居无定所,高额的房价~无尽的冤念!

posted @ 2008-07-29 17:49  Bright-Liang  阅读(1120)  评论(8编辑  收藏  举报