【问题标题】:ASp.Net Identity Role managerASp.Net 身份角色管理器
【发布时间】:2015-06-10 19:22:48
【问题描述】:

我正在使用 Visual Studio 2013。我有一个带有 asp.net 身份的 ASP.net (vb) Webforms 站点。我试图创建一个管理用户角色和创建角色的页面。当涉及到网络表单时,我无法在网上找到任何帮助。此代码适用于 asp.net 成员资格,但不适用于 Identity。这是我的代码。 请帮忙谢谢。

Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework
Imports Microsoft.AspNet.Identity.Owin
Imports Microsoft.Owin.Security
Imports Owin

Partial Class AssignRoles
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Roles.AddUserToRole(DropDownList5.SelectedValue, DropDownList6.SelectedValue)
        Label1.Text = DropDownList5.SelectedValue + " Was added to the " + DropDownList6.SelectedValue + " Role."
    End Sub

    Protected Sub btnremoverole_Click(sender As Object, e As EventArgs) Handles btnremoverole.Click
        Roles.RemoveUserFromRole(DropDownList3.SelectedValue, DropDownList4.SelectedValue)
        Label1.Text = DropDownList3.SelectedValue + " Was removed from the " + DropDownList4.SelectedValue + " Role."
    End Sub

    Protected Sub CreateRole_Click(sender As Object, e As EventArgs) Handles CreateRole.Click
        Dim createRole As String = RoleTextBox.Text

        Try
            If Roles.RoleExists(createRole) Then
                Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' already exists. Please specify a different role name."
                Return
            End If

            Roles.CreateRole(createRole)

            Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' created."

            ' Re-bind roles to GridView.

        Catch
            Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' <u>not</u> created."
        End Try
    End Sub
End Class

这是标记代码

<%@ Page Title="Admin Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true"CodeBehind="AssignRoles.aspx.vb" Inherits="Conflict_Minerals.AssignRoles" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">



    <div class="row">
        <div class="col-md-12">
            <h2>Admin Panel</h2>
            <br />
        </div>
        <div class="col-md-8">
            <asp:Label ID="Label3" runat="server" Text="Add user to role:  "></asp:Label>
            <asp:DropDownList ID="DropDownList5" runat="server" DataSourceID="SqlDataSource1" DataTextField="UserName" DataValueField="UserName">
            </asp:DropDownList>
            <asp:DropDownList ID="DropDownList6" runat="server" DataSourceID="SqlDataSource2" DataTextField="Name" DataValueField="Name">
            </asp:DropDownList>
            <asp:Button ID="Button1" runat="server" Text="Add user to role" />
        </div>
        <div class="col-md-8">
            <br />
            <br />
            <br />
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <br />
            <br />
            <br />
            <asp:Label ID="Label2" runat="server" Text="Remove user from role:   "></asp:Label>

            &nbsp;&nbsp;&nbsp;<asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlDataSource1" DataTextField="UserName" DataValueField="UserName">
            </asp:DropDownList>
             &nbsp<asp:DropDownList ID="DropDownList4" runat="server" DataSourceID="SqlDataSource2" DataTextField="RoleName" DataValueField="RoleName">
            </asp:DropDownList> &nbsp

            <asp:Button ID="btnremoverole" runat="server" Text="Remove user from role" Height="26px" />

            <br />
            <br />
            <div>
                <h2>Manage Roles</h2>
            </div>
            <br />
            <asp:TextBox ID="RoleTextBox" runat="server"></asp:TextBox>
            <asp:Button ID="CreateRole" runat="server" Text="Create Role" />
            <br />
            <br />
            <asp:Label ID="Msg" runat="server" Text="Label"></asp:Label>
            <br />
            <br />
            <br />
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT [Name] FROM [vw_AspNetRoles]"></asp:SqlDataSource>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" SelectCommand="SELECT [UserName] FROM [AspNetUsers]"></asp:SqlDataSource>
                <br />
            <br />

        </div>
    </div>
</asp:Content>

【问题讨论】:

    标签: asp.net vb.net webforms sql-server-2012 asp.net-identity


    【解决方案1】:

    我在这里找到了解决方案是我的代码

    Imports Microsoft.AspNet.Identity
    Imports Microsoft.AspNet.Identity.EntityFramework
    Imports Microsoft.AspNet.Identity.Owin
    Imports Microsoft.Owin.Security
    Imports Owin
    
    Partial Class AssignRoles
        Inherits System.Web.UI.Page
    
    
    
    
        Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim UserManager = New UserManager(Of IdentityUser)(New UserStore(Of IdentityUser)(New IdentityDbContext()))
            UserManager.AddToRole(DropDownList5.SelectedValue, DropDownList6.SelectedValue)
            Label1.Text = DropDownList5.SelectedItem.Text + " Was added to the " + DropDownList6.SelectedValue + " Role."
        End Sub
    
        Protected Sub btnremoverole_Click(sender As Object, e As EventArgs) Handles btnremoverole.Click
            Dim UserManager = New UserManager(Of IdentityUser)(New UserStore(Of IdentityUser)(New IdentityDbContext()))
            UserManager.RemoveFromRoles(DropDownList3.SelectedValue, DropDownList4.SelectedValue)
            Label1.Text = DropDownList3.SelectedItem.Text + " Was removed from the " + DropDownList4.SelectedValue + " Role."
        End Sub
    
        Protected Sub CreateRole_Click(sender As Object, e As EventArgs) Handles CreateRole.Click
    
    
            Dim createRole As String = RoleTextBox.Text
            Dim RoleManager = New RoleManager(Of IdentityRole)(New RoleStore(Of IdentityRole)(New ApplicationDbContext()))
            Try
                If RoleManager.RoleExists(createRole) Then
                    Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' already exists. Please specify a different role name."
                    Return
                End If
    
                RoleManager.Create(New IdentityRole(createRole))
    
                Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' created."
    
                ' Re-bind roles to GridView.
    
            Catch
                Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' <u>not</u> created."
            End Try
        End Sub
    End Class
    

    【讨论】:

    • 对于我们这些对 Identity V2.x 及更高版本疯狂的人来说,需要注意的是,这些角色与旧角色不同(在旧的会员模型中)。这就是为什么很难得到准确的答案。 Microsoft STILL 没有可使用的用户+角色管理器模板也无济于事 - 这将节省数小时/数天的猜测工作(此外,对于无法转换为 MVC 的现有系统,Webforms 演示也可以节省时间) .
    【解决方案2】:

    您将需要实例化 RoleManager 来处理角色。从那里您可以替换您的 AddRole 和 RemoveRole 代码。您将需要一个 UserManager 来为用户分配角色。这是 WebForms 的演练。http://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/membership-and-administration

    【讨论】:

    • 谢谢,但你给我的链接是关于会员资格的,我需要一个关于身份的例子。它还需要是 Vb 我不知道 c#。
    • 不,是身份。他们将其称为“ASP.NET Identity 是用于构建 ASP.NET Web 应用程序的成员系统......”它只是基本的对象实例化和使用,但如果你真的想要 VB 使用这个工具:converter.telerik.com
    • 更好的是,有人已经将该示例转换为 VB code.msdn.microsoft.com/ASPNET-45-Web-Forms-f37f0f63
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多