




























近期由于身心不适,一直没更新,现又拿起笔,继续这个系列……
CS中的用户及权限管理是比较复杂的,了解其中的用户及权限有关的机制对掌握CS的核心是至关重要的,现就对CS中的用户管理机制作一个简要介绍。
CS是在Asp.Net1.1时代出现的,固然,在CS1系列中使用的权限机制是建立在微软MemberRole1.0之上的,那么在CS2中仍然沿袭了这一模块。不过我们可以看到CS2针对ASP1.1和Asp2.0做了两套方案,这样我们就可以在.net1.1状态下用MemberRole1.0在.net2.0状态下用ASP.NET2.0自带的MemberRole。那么CS2中是怎样做到这么灵活的配置的呢,下面就一一道来:
前面一系列的文章提到在CS2中运用的一种很常见的模式-代理模式,代理模式诸多优点我就不在这里细说了,最突出的那就是可以在自己的规则里使用第三方组建,而不会直接依赖第三方组建,当第三方组建变动的时候,只需要改代理层即可,同样,在CS2处理MemberRole的时候也用到了此模式,下面我们就看看此模式带来了什么。
让我们先来看看CommunityServerComponents这个项目,这个项目为CS的核心,里面定义了CS运行所需要的抽象类、接口、公用方法、实体类等等,显然要定义MemberRole的接口当然也应该在此定义了,这也符合接口倒置原则,接口的使用者定义接口,而不是提供者。打开项目里的\Components\Provider\User\文件夹,此文件夹内就是全部接口的定义和调用规则了:


上图调用MemberRole组建的所有接口定义,可以看出这里除了MemberRoleProfileProvider这个抽象类有实体方法外,其他都为接口定义,调用的时候当然是调用MemberRoleProfileProvider里面的实体方法了,这里的方法告诉我们通过配置找到需要加载的代理组建并适时加载:
static MemberRoleProfileProvider()
{
CSConfiguration config = CSConfiguration.GetConfig();
Provider provider = config.Providers["MemberRoleProfileProvider"] as Provider;
if(provider != null)
{
if(Globals.IsNullorEmpty(provider.Type))
throw new Exception("MemberUserRoleProvider provider found, but no type attribute was specified");
Type type
= Type.GetType(provider.Type);murp
= Activator.CreateInstance(type) as MemberRoleProfileProvider; 这个静态方法就是为了完成此项工作的了。
配置节点在CommunityServer.config里的providers的MemberRoleProfileProvider,这就告诉CS2需要使用哪个代理来处理MemberRole。
<add
name = "MemberRoleProfileProvider"
type = "CommunityServer.MemberRole.CSMemberRoleProfileProvider, CommunityServer.MemberRole"
/>
好了,看完了接口我们不难猜到代理层应该做什么了,当然是实现这些接口了:
![]()
<sectionGroup name="memberrolesprototype">
<section name="membership" type="Microsoft.ScalableHosting.Configuration.MembershipConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562" />
<section name="roleManager" type="Microsoft.ScalableHosting.Configuration.RolesConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562" />
<section name="profile" type="Microsoft.ScalableHosting.Configuration.ProfileConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562" />
<section name="anonymousIdentification" type="Microsoft.ScalableHosting.Configuration.AnonymousIdConfigHandler, MemberRole, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7c773fb104e7562" />
</sectionGroup>
还有在profile节点的
<providers>
<add name="CommunityServerSqlProvider" type="CommunityServer.MemberRole.CSProfileProvider, CommunityServer.MemberRole" connectionStringName="SiteSqlServer" applicationName="dev" description="Stores and retrieves profile data from the local Microsoft SQL Server database" />
</providers>
这些就是告诉系统需要怎样调用MemberRole了
通过配置好上面的各项,就可以在系统里实现其基本的用户管理了,当然我们会看到CS2在处理用户管理的时候还做了非常多的工作,这也不是一时半会儿能讨论清楚的,先在这里抛砖一下,更多高级应用还得需要大家慢慢体会。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。

