我尝试为我的应用程序实现登录。用户可以有多个角色(查看者、操作员、管理员等)。但是他必须选择一个他想登录的角色,所以他可能有管理员权限,但他可以作为没有管理员权限的“查看者”登录。
现在的问题是,如果我尝试使用RequiredRole 属性为管理员保护某些功能,如果用户以查看者身份登录,即使他拥有管理员权限,他也应该无法访问此功能。
框架是否支持这种行为,或者以前有没有人做过类似的事情?
无论如何感谢您的帮助
我尝试为我的应用程序实现登录。用户可以有多个角色(查看者、操作员、管理员等)。但是他必须选择一个他想登录的角色,所以他可能有管理员权限,但他可以作为没有管理员权限的“查看者”登录。
现在的问题是,如果我尝试使用RequiredRole 属性为管理员保护某些功能,如果用户以查看者身份登录,即使他拥有管理员权限,他也应该无法访问此功能。
框架是否支持这种行为,或者以前有没有人做过类似的事情?
无论如何感谢您的帮助
当他以查看者身份登录时尝试执行需要管理员的操作时,您没有指定您希望发生的事情,但是由于您可以实现自己的角色提供者,这很容易做到。
您应该能够在会话或您的用户主体对象中存储一些内容,说明“可用角色”(例如,其中一些将无法选择管理员),然后另一个用于选定角色。您需要做的就是将一些页面放入您的站点,以允许用户选择他们当前的角色。
由于您将使用自己的角色提供程序,因此您可以在检查角色时实现这一点以从会话(或用户主体)中提取相关信息。您仍然可以随意使用RequiredRole 属性。
当您无权将您重定向到 403 页面时,您可以如何更改将您重定向到登录表单的行为(例如,使用 ASP.NET 成员资格,我如何显示 403?) . 然后,您可以在此页面上显示一些内容,如果他们有可用的角色,则允许用户切换到更高的角色。