我需要在MVC3 Web应用程序中实现用户权限提升,用于表单和
Windows身份验证,但这个问题对于Windows auth至关重要.这是为了更高的特权用户向较低特权用户提供帮助,例如当文书用户执行任务并要求管理员用户在文书用户可以继续之前执行任务时,管理员用户应该能够将同一会话提升到其特权级别,执行管理任务并恢复较低权限到会议.我没有看到一个办法,没有文书用户登录,管理员用户登录,因为我们想要在文书用户的桌面上实现这一点.也许用户切换比整个新的会话更整洁,但我非常喜欢Windows验证的Web应用程序的“运行”等效.
这是否可能,如果是这样,我该如何实现呢?我不知道哪里甚至开始寻找.
解决方法
你可以在你的网站上放置一个锚点:
@Html.ActionLink("elevate to admin","SwitchToAdmin","Home")
然后有一个控制器操作,将允许输入管理员凭据:
public ActionResult SwitchToAdmin() { // TODO: Adjust the role name that your administrators will have if (!User.IsInRole(@"DOMAIN\Administrators")) { // The user is not currently an admin => popup a logon Box // so that the administrator could authenticate himself return new HttpUnauthorizedResult(); } else { // After inputting the correct username and password for the // admin,we can now redirect to the home action and start performing // the admin tasks return RedirectToAction("index","home"); } }
回归过程将是倒数.你可以有一个链接,如果用户是一个管理员,一般用户可以输入用户名和密码,它将会调用一个控制器动作,该操作会抛出401.