DotNetNuke与MemberShip的结合(五年版)第三步修改HttpModule.DNNMembership
DotNetNuke与MemberShip的结合(五年版)
第一步:实装基于现有membership的DNN
http://www.cnblogs.com/shiningrise/archive/2007/08/13/854297.html
第二步:修改Provider.Membership.AspNetProvider登录方法, 添加membership用户到DNN数据库 (指原本没有的用户)
http://www.cnblogs.com/shiningrise/archive/2007/08/22/864685.html
第三步:修改HttpModule.DNNMembership,让非从DNN登录的用户转到DNN系统时, 添加membership用户到DNN数据库 (指原本没有的用户)
下面来写一下第三步.
拷贝 HttpModule.DNNMembership成新的DNNMembership为HttpModule.DNNMembershipFiveYears
新建一个方法
Private Function CreateDNNUser(ByRef user As UserInfo) As UserCreateStatus
Dim objSecurity As New PortalSecurity
Dim userName As String = objSecurity.InputFilter(user.Username, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
Dim email As String = objSecurity.InputFilter(user.Email, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
Dim lastName As String = objSecurity.InputFilter(user.LastName, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
Dim firstName As String = objSecurity.InputFilter(user.FirstName, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
Dim createStatus As UserCreateStatus = UserCreateStatus.Success
Dim displayName As String = objSecurity.InputFilter(user.DisplayName, PortalSecurity.FilterFlag.NoScripting Or PortalSecurity.FilterFlag.NoAngleBrackets Or PortalSecurity.FilterFlag.NoMarkup)
Dim updatePassword As Boolean = user.Membership.UpdatePassword
Dim isApproved As Boolean = user.Membership.Approved
Try
'下面这句有点东西在里面,大家自己看去
Dim dataProvider As DotNetNuke.Security.Membership.Data.DataProvider = DotNetNuke.Security.Membership.Data.DataProvider.Instance()
user.UserID = CType(dataProvider.AddUser(user.PortalID, userName, firstName, lastName, user.AffiliateID, user.IsSuperUser, email, displayName, updatePassword, isApproved), Integer)
Catch ex As Exception
'Clear User (duplicate User information)
user = Nothing
createStatus = UserCreateStatus.ProviderError
End Try
Return createStatus
End Function
修改Public Sub OnAuthenticateRequest(ByVal s As Object, ByVal e As EventArgs)方法
If Request.IsAuthenticated = True And Not _portalSettings Is Nothing Then
Dim arrPortalRoles() As String
Dim objRoleController As New RoleController
Dim objUser As UserInfo = UserController.GetCachedUser(_portalSettings.PortalId, Context.User.Identity.Name)
/******下面是新添加的******************************************/
Dim user As UserInfo = Nothing
user = objUser
If (user Is Nothing) Then
Dim username As String = Context.User.Identity.Name
user = New UserInfo
user.PortalID = _portalSettings.PortalId
user.Username = username
user.Email = username + "@163.com"
user.FirstName = username
user.LastName = username
user.DisplayName = username
Me.CreateDNNUser(user)
objUser = UserController.GetCachedUser(_portalSettings.PortalId, Context.User.Identity.Name)
End If
/************************************************/
修改web.config
<!--<add name="DNNMembership" type="DotNetNuke.HttpModules.DNNMembershipModule, DotNetNuke.HttpModules.DNNMembership" /> -->
<add name="DNNMembershipFiveYears" type="DotNetNuke.HttpModules.DNNMembershipModuleFiveYears, DotNetNuke.HttpModules.DNNMembershipFiveYears" />
DNN4.5.5
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章