• 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

    点击下载源码 

  • 相关阅读:
    Save the problem!
    Divisiblity of Differences
    定个小目标
    Faulty Robot
    反片语 uva 156(map的使用
    Input is terminated by EOF.
    uva10815 andy的字典(set的应用)
    uva-101 搬砖问题(不定长数组vector的使用)
    回文串uva401(清简出风尘)
    WERTYU (善用常量数组
  • 原文地址:https://www.cnblogs.com/shiningrise/p/865848.html
Copyright © 2020-2023  润新知