【发布时间】:2014-09-05 14:33:12
【问题描述】:
将我以前的 CustomRoleProvider 升级到 Asp.Net MVC 5 中的新提供程序的最佳方法是什么。我刚刚实现了这些方法并推出了我自己的表(因为它是一个多数据库 Web 应用程序)。
升级我的身份验证最简单、最快捷的方法是什么?
我之前的 web.config
<roleManager enabled="true" defaultProvider="MyCustomRoleProvider" cacheRolesInCookie="true" createPersistentCookie="true">
<providers>
<clear />
<add name="MyCustomRoleProvider" type="FacturatieMVCv2.Web.Core.MyCustomRoleProvider" />
</providers>
</roleManager>
还有我的 RoleProvider
Imports FacturatieMVCv2.Service
Imports FacturatieMVCv2.Domain.Common
Imports System.Web
Imports FacturatieMVCv2.Web.Core
Public Class MyCustomRoleProvider
Inherits System.Web.Security.RoleProvider
Dim _userService As Master.UserService
Public Sub New(ByVal UserService As Master.IUserService)
_userService = UserService
End Sub
Public Sub New()
End Sub
Public Overrides Sub AddUsersToRoles(usernames() As String, roleNames() As String)
End Sub
Public Overrides Property ApplicationName As String
Get
Return My.Application.Info.AssemblyName
End Get
Set(value As String)
End Set
End Property
Public Overrides Sub CreateRole(roleName As String)
Throw New NotImplementedException("UsesBitWiseOperations, change the ENUM Field")
End Sub
Public Overrides Function DeleteRole(roleName As String, throwOnPopulatedRole As Boolean) As Boolean
Throw New NotImplementedException("UsesBitWiseOperations, change the ENUM Field")
End Function
Public Overrides Function FindUsersInRole(roleName As String, usernameToMatch As String) As String()
Return _userService.FindUsersInRole(roleName, usernameToMatch).Select(Function(el) el.UserName)
End Function
Public Overrides Function GetAllRoles() As String()
Return _userService.GetAllRoles
End Function
Public Overrides Function GetRolesForUser(username As String) As String()
Return _userService.GetRolesForUser(username)
End Function
Public Overrides Function GetUsersInRole(roleName As String) As String()
Return _userService.GetUsersInRole(roleName).Select(Function(el) el.UserName)
End Function
Public Overrides Function IsUserInRole(username As String, roleName As String) As Boolean
Return _userService.IsUserInRole(username, roleName)
End Function
Public Overrides Sub RemoveUsersFromRoles(usernames() As String, roleNames() As String)
_userService.RemoveUsersFromRoles(usernames, roleNames)
End Sub
Public Overrides Function RoleExists(roleName As String) As Boolean
Return _userService.RoleExists(roleName)
End Function
End Class
【问题讨论】:
-
IMO 您需要制定更具体的问题。这个问题有点像“请修复我的代码”。可能不是那个意思,但问题很模糊。
-
实际上更多的是 Asp.Net MVC 4 与 Asp.Net MVC 5 身份/身份验证问题。之前一切都很好(使用 customProviders),但现在有了新的 Asp.Net 身份,我在迁移到最新方法时遇到了一些问题......例如。我的角色是枚举中的管理员/支持和用户。现在他们正在使用声明。我不能更具体,因为它是关于过去与现在的 Asp.Net 身份验证。
-
我真的不明白你的意思。 MVC5 中的 Membership Providers 没有改变。有新的 ASP.NET 标识,但如果您不使用它,那也没关系。旧的供应商仍然像往常一样工作。您的问题可能与其他问题有关。您是否还升级到更新版本的 IIS?更重要的是,给我们代码只是调用我们看不到的其他客户代码并没有多大帮助......我们不知道您的用户服务做什么......您也没有向我们展示实际问题发生在哪里(Pre app start 中的初始化)
标签: asp.net-mvc forms-authentication asp.net-identity owin claims-based-identity