需求:Moss站点需要Form认证,同时登陆Moss站点时候需要自己的逻辑进行登陆
解决方案:1.将Moss站点先设置成Form认证,这个就不多说了,网上一搜很多的
2.自定义自己的Provider类
我的代码:
- Imports System.Data
- Imports System.Data.SqlClient
- Public Class AesMembershipProvider
- Inherits System.Web.Security.SqlMembershipProvider
- Private ConnStr As String
- Public Overrides Sub Initialize(ByVal name As String, ByVal config As System.Collections.Specialized.NameValueCollection)
- ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings("MyConnectionString").ToString()
- MyBase.Initialize(name, config)
- End Sub
- Public Overrides Function ValidateUser(ByVal username As String, ByVal password As String) As Boolean
- ''自己的逻辑代码,因为我就需要修改登陆这一块,所以,我就重写ValidateUser方法就可以了.
- End Function
- End Class
3.编译成Dll文件,放到Moss站点的Bin目录中。
4.修改站点的 config文件
连接字符串:
- <connectionStrings>
- <remove name="MyConnectionString" />
- <add name="MyConnectionString" connectionString="server=(local); database=TableName; Trusted_Connection=False ;user id
- =sa ; pwd =1 " providerName="System.Data.SqlClient" />
- </connectionStrings>
- '' 说明: Trusted_Connection=False 这个貌似必须为False,因为,我刚开始用的是True,也就是WINDOWS认证,一直就报错,后来无意中修改了一下,成功了,当然改成FALSE,必须要提供数据库的用户名和密码的
Provider:
- <membership defaultProvider="AesMembershipProvider">
- <providers>
- <remove name="AesMembershipProvider" />
- <add connectionStringName="MyConnectionString"
- passwordAttemptWindow="10"
- enablePasswordRetrieval="false"
- enablePasswordReset="true"
- requiresQuestionAndAnswer="true"
- applicationName="/"
- requiresUniqueEmail="false"
- passwordFormat="Hashed"
- maxInvalidPasswordAttempts="5"
- minRequiredPasswordLength="1"
- minRequiredNonalphanumericCharacters="0"
- passwordStrengthRegularExpression=""
- description="Stores and retrieves membership data from the Microsoft SQL Server database"
- name="AesMembershipProvider"
- type="AesMembershipProvider.AesMembershipProvider,AesMembershipProvider, Version=1.0.0.0, Culture=neutral,
- PublicKeyToken=null" /> '需要修改这个地方就行了。这个type是刚刚上边写的类库,然后用Reflence的工具就可以得到,说明,type里边要写5项,你用工具貌似就4项,所以需要自己写下, 大概 1. 命名空间.类名 2.类名(还是命名空间的名字忘记了) , 3.Version 4.Culture 5.Token 不行的话,可以多试试
- </providers>
- </membership>
还有个地方要修改一下: 在CONFIG文件的3/4处,大概有一句话
<trust level="WSS_Minimal" originUrl="" />
这句也要修改一下, 改成<trust level="Full" originUrl="" />
刚开始报的错误,貌似就是没权限,后来搜了下,说改成Full就行了。不知道改了以后对其他地方有没有影响
注:上边的config文件是修改的MOSS站点的配置文件,因为我是刚刚测试成功了,测试的时候我的管理中心的配置文件也修改成上边的样子了,我不知道是否用修改管理中心的配置文件,所以大家可以都试下,我就不贴什么结果了。
大致的配置就这么多,然后在管理中心中添加站点的管理员,登陆一下,成功。