asp.net-mvc-2 – 如何在ASP.NET MVC中实现自定义主体和标识?
我想在验证的用户中存储额外的信息,以便我可以轻松访问它(例如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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 有没有一种很好的方法将ASP.NET身份验证和F
- 从Bitmap对象将图像渲染到ASP.NET MVC网页上
- .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源
- asp.net-mvc – ASP.NET MVC:在回发上更改模型的属性
- 通过FTP连接Azure上的网站
- asp.net – MVC ViewModel错误 – 没有为此对象定义的无参数
- ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单实例
- asp.net – 我可以隐藏/显示asp:菜单项基于角色吗?
- 如何在ASP.NET Core 1.0 RC2中加载程序集
- asp.net-mvc – 配置IIS 7以通过虚拟路径提供程序处理静态文