如果我在 ASP.NET MVC 中实现自己的 CustomPrincipal,是否必须使用自定义 ActionFilterAttribute?
如果我在 ASP.NET MVC 中实现自己的 CustomPrincipal,我是否必须使用自定义 ActionFilterAttribute 来检查我的用户所属的角色(例如 在 ASP.NET MVC 中设置身份验证)?
当我使用
[Authorize]
它时效果很好。但是当我使用时
[Authorize(Roles=("Example"))]
它会关闭并寻找:
“dbo.aspnet_CheckSchemaVersion”
显然我没有,因为我还没有将 ASP.NET 成员对象添加到我的数据库中,我正在编写自己的对象。
我正在使用 ASP.NET MVC 2 beta。
如何覆盖默认属性使用的逻辑,以便可以使用相同的标签 [Authorize(Roles=("Example"))]
?
If I implement my own CustomPrincipal in ASP.NET MVC, must I use a custom ActionFilterAttribute to check for roles that my users belong to (like in Setting up authentication in ASP.NET MVC)?
When I use
[Authorize]
it works fine. But when I use
[Authorize(Roles=("Example"))]
it goes off and looks for:
"dbo.aspnet_CheckSchemaVersion"
Which I obviously don't have since I haven't added the ASP.NET membership objects to my database, I'm writing my own.
I'm using ASP.NET MVC 2 beta.
How can I override the logic that the default attributes uses so that I can use the same tag, [Authorize(Roles=("Example"))]
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用的属性将尝试使用默认的 RoleProvider 来找出用户所处的角色。
在文章中,他概述了创建一个自定义 [UserInRole("Admin")] 属性,该属性避免 RoleProvider 并使用自定义逻辑来确定什么角色用户所在的位置。
这是一篇关于实现您自己的 RoleProvider 的很好的 MSDN 文章:
http://msdn.microsoft.com/en-us/library/8fw7xh74。 aspx
编辑答案:
您必须实现自己的角色提供程序或创建自己的自定义标签。您的自定义标记可能看起来与 MVC 中的标记类似,但您不能只匹配签名并希望以这种方式覆盖它。
The attribute your using will try and use the default RoleProvider to find out what role that user is in.
In the article he outlines creating a custom [UserInRole("Admin")] attribute that avoids the RoleProvider and uses custom logic to determine what role the user is in.
Here is a good MSDN article about implementing your own RoleProvider:
http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx
Edit Answer:
Your going to have to implement your own roleprovider or create your own custom tag. Your custom tag can look similar to the one baked into MVC but you can't just match signatures and hope to override it that way.