加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-2 – 如何在ASP.NET MVC中实现自定义主体和标识?

发布时间:2020-12-15 23:40:25 所属栏目:asp.Net 来源:网络整理
导读:我想在验证的用户中存储额外的信息,以便我可以轻松访问它(例如User.Identity.Id),而不是仅仅是名称,因为我计划拥有非唯一的名称. 到目前为止,我已经收集到,我应该寻求实现自定义主体和/或身份,但我不知道如何去做.我一直在寻找关于这个问题的文档和教程,但是
我想在验证的用户中存储额外的信息,以便我可以轻松访问它(例如User.Identity.Id),而不是仅仅是名称,因为我计划拥有非唯一的名称.

到目前为止,我已经收集到,我应该寻求实现自定义主体和/或身份,但我不知道如何去做.我一直在寻找关于这个问题的文档和教程,但是我在不同的地方找到了相关的东西,我发现它有点混乱.

我已经看到了如何在用户数据属性中的身份验证cookie中添加自定义信息,但是我想从单元测试中获得依赖注入的好处,我可以使用主体和身份.

如果我想实现自己的校长或身份,我需要考虑哪些具体步骤?

在这种情况下,我可以做的最简单(只需添加ID并保留所有默认值). “默认值”将包括默认提供程序(成员资格,角色等).

我已经看到了other question,但是我会欣赏不会有任何漏洞的答案,例如示例中AuthenticateRequest事件中的角色魔术字符串.相反,我需要知道如何将角色从默认的SqlRoleProvider添加到当前用户:何时和在哪里做,如果我需要做任何事情来连接我的新类与其他默认提供程序.

能够去一个示例ASP.NET MVC 2应用程序(例如,从visual studio 2010模板),这样做是很棒的,进行编辑并使其工作.

编辑:我已经编辑了这个问题,以便更好地表明我在这里丢失了很多,所以我无法做出太高级别的答案.

在我看来,在身份认同而不是委托人身上,更有意义的是,尽管我以前曾表示过这样的看法.

解决方法

以下问题已回答:
ASP.NET MVC – Set custom IIdentity or IPrincipal

但是总结一下…

使用您要存储的其他属性来自定义主体类:

Public Class CustomPrincipal
    Inherits System.Security.Principal.GenericPrincipal

    Private _eyeColor As String
    Public ReadOnly Property EyeColor As String
        Get
            Return _eyeColor
        End Get
    End Property

    Public Sub New(id As System.Security.Principal.IIdentity,roles As String(),eyeColor As String)
        MyBase.New(id,roles)
        _eyeColor = eyeColor            
    End Sub

End Class

修改global.asax Global.Application_AuthenticateRequest以使用您的自定义主体:

Protected Sub Application_AuthenticateRequest(ByVal sender As Object,ByVal e As System.EventArgs)
    ...
    Dim roles() As String = {"examplerole"}         
    Context.User = new CustomPrincipal(Context.User.Identity,roles,"green")
End Sub

然后在代码中的其他地方,当你想参考这些属性之一时,这样做:

CType(My.User.CurrentPrincipal,CustomPrincipal).EyeColor

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读