到目前为止,我已经收集到,我应该寻求实现自定义主体和/或身份,但我不知道如何去做.我一直在寻找关于这个问题的文档和教程,但是我在不同的地方找到了相关的东西,我发现它有点混乱.
我已经看到了如何在用户数据属性中的身份验证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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。