C# 具有特定角色的c角色Provider登录

C# 具有特定角色的c角色Provider登录,c#,roleprovider,role,C#,Roleprovider,Role,我尝试为我的应用程序实现登录。 用户可以有多个角色:查看者、操作员、管理员等。。 但他必须选择一个他想要登录的特定角色, 因此,他可能有管理员权限,但他可以作为没有管理员权限的查看器登录 现在的问题是,如果我尝试为管理员保护某些具有RequiredRole属性的功能,那么如果用户以查看器身份登录,即使他拥有管理员权限,也不应该能够访问此功能 这样的beaviour是否受到框架的支持,或者以前是否有人做过类似的事情 无论如何,感谢您的帮助当他以查看器身份登录时尝试执行需要管理员的操作时,您还没有指

我尝试为我的应用程序实现登录。 用户可以有多个角色:查看者、操作员、管理员等。。 但他必须选择一个他想要登录的特定角色, 因此,他可能有管理员权限,但他可以作为没有管理员权限的查看器登录

现在的问题是,如果我尝试为管理员保护某些具有RequiredRole属性的功能,那么如果用户以查看器身份登录,即使他拥有管理员权限,也不应该能够访问此功能

这样的beaviour是否受到框架的支持,或者以前是否有人做过类似的事情


无论如何,感谢您的帮助

当他以查看器身份登录时尝试执行需要管理员的操作时,您还没有指定要执行的操作,但由于您可以实现自己的角色提供程序,因此这很容易做到

您应该能够在会话或您的用户主体对象中存储一些内容,说明可用的角色。例如,其中一些人将无法选择管理员,然后为所选角色选择另一个管理员。你所需要做的就是在你的网站上放一些页面,让用户选择他们当前的角色

因为您将使用自己的角色提供程序,所以在检查角色时,您只需实现此功能即可从会话或用户主体中提取相关信息。您仍然可以随意使用RequiredRole属性


这里有几个示例,说明了当您无法将自己重定向到403页时,如何改变将自己重定向到登录表单的行为,例如。然后,您可以在此页面上显示一些内容,允许用户切换到更高的角色(如果他们有可用的角色)。

您好,感谢您的快速响应:因此,在客户端,我可以使用:WebContext.Current.user访问用户对象。此自定义用户对象具有两个属性CurrentRole和AvailableRoles。用户可以选择其角色的登录也已实现,但现在我不知道如何在我的RoleProvider中访问此CurrentRole以适应我的GetRolesForUser方法,我认为该方法应该返回此当前角色?或者我必须调整IsUserInRole方法吗?感谢您的帮助=您需要实现IsUserInRole,可能还需要实现GetRolesForUser。从这两个方面,您应该能够访问HttpContext.Current,并且从那里您可以访问用户和会话对象。这应该是你所需要的。GetRolesForUser应该只返回当前角色。您好,再次感谢,我现在用这种方式尝试了…在我看来它应该可以工作…但我现在遇到了一个异常:如前所述,我们有一个自定义用户对象来存储这些附加信息,如我现在尝试访问HttpContext.current.user时的current role它来自IPrincipal类型,而WebContext.current.user是我们的自定义对象,因此,我无法访问所需的信息=/我想如果我能获得这些信息,我的问题就会得到解决…请参阅,了解如何提供自定义主体对象。您仍然需要将其从IPrincipal转换回您的自定义类型。您好,我再次查看了您的链接,因为我没有自己编写登录部分,而且我对整个web开发还不熟悉。我有点困惑:那么我如何以及在哪里编写此FormsAuthentication\u-OnAuthentication方法?我是否必须更改当前登录实现中的基本内容?因此,在my App.xaml中,它创建了一个新的WebContext,并在一个新的身份验证中:WebContext WebContext=new WebContext//create RIA WebContext{Authentication=new FormsAuthentication,};现在如何获取此OnAuthenticate事件?再次感谢您的帮助: