授权失败时将用户重定向到特定视图?

2024-02-08

我有以下代码:

    [AcceptVerbs(HttpVerbs.Post), Authorize(Roles = RoleKeys.Administrators)]
    public ActionResult Edit(int id, FormCollection collection)
    {
        User user = userRepository.GetUser(id);

        try
        {
            this.UpdateModel(user);

            userRepository.Save();

            return this.RedirectToAction("Details", new { id = user.UserId });
        }
        catch
        {
            this.ModelState.AddModelErrors(user.GetRuleViolations());

            return View(new UserFormViewModel(user));
        }
    }

如果当前登录的用户是not在管理员角色中,它会将他们踢回到登录屏幕。用户是already登录后,他们只是无权执行所请求的操作。

有没有办法让它们重定向到特定视图,例如 AccessDenied?


您可以定义自己的属性:

public class MyAuthorizeAttribute: AuthorizeAttribute
{
    public override void OnAuthorization( AuthorizationContext filterContext )
    {
         base.OnAuthorization(filterContext);
         if (filterContext.Result is HttpUnauthorizedResult)
         {
             filterContext.Result = new RedirectToRouteResult(
             new RouteValueDictionary
             {
                 { "controller", "Login" },
                 { "action", "AccessDenied" }
             });
         }
    }
}

and use

[AcceptVerbs(HttpVerbs.Post), MyAuthorize(Roles = RoleKeys.Administrators)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

授权失败时将用户重定向到特定视图? 的相关文章

  • 删除打印为 PDF 的选项

    当单击 Crystal 报告的打印按钮时 我看到以下内容 我不想先导出为 PDF 我只想在按下 打印 按钮时立即打印 我该如何配置此行为 听起来你想使用PrintToPrinter方法 根据 MSDN 将报表的指定页面打印到使用 Print
  • 开放、安全的 TCP 通道的安全期限有多长?

    我们有一个网络服务 充当我们的客户和其他服务之间的网关 客户端向第三方服务发送消息并从第三方服务接收随机消息 客户端的服务器通过安全套接字打开到我们的 Web 服务器的通道 以便接收传入的消息 并且不必每隔几分钟轮询一次服务器 我的问题是
  • 维护用户 ID 的最佳实践 (MVC)

    我使用 FormsAuthentication 但添加了自定义 MemberShipProvider 来根据自定义用户表进行验证 所有包含 用户数据 的表都有一个 idUser 列 因此我需要维护用户 id 以便向用户显示他的数据 以前我使
  • 选择另一个下拉列表时填充下拉列表[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如果有人提交“恶意软件”nuget 包怎么办?

    我检查了Nuget提交流程 http docs nuget org docs creating packages creating and publishing a package 并且没有找到任何有关基本检查或审查流程的信息 那么 如果有
  • 应用程序网关前面的 Azure 前门

    我已在应用程序网关的前面部署了 Azure Front Door 现在 我想通过 Front Door 路由所有流量 并限制对应用程序网关的公共 IP 地址的直接访问 怎么做 这就是我想做的 https i stack imgur com
  • 无法解析请求正文

    我一直在尝试解决以下错误 但无法解决 下面是代码 HttpPost public async Task
  • 返回 JSON 或部分 html 的 ASP.NET MVC 控制器操作

    我正在尝试创建控制器操作 该操作将根据参数返回 JSON 或部分 html 将结果异步返回到 MVC 页面的最佳方法是什么 在您的操作方法中 返回 Json object 以将 JSON 返回到您的页面 public ActionResul
  • SignalR - 如何向除呼叫者之外的所有人发送消息

    我有一个 Aspnet core 3 1 MVC 应用程序 我在其中配置了 SignalR 集线器 我有一个控制器 我可以在其中进行依赖注入 oIHubContext private readonly IHubContext
  • 使用 ASP.Net MVC 实现 .Net OpenId

    我下载的样本是从DotNetOpenId http code google com p dotnetopenid 与我创建新应用程序时获得的 MVC 1 0 应用程序有不同的文件 我对 MVC 和 openId 很陌生 我遇到的所有示例都非
  • 让 PHPmailer 成为 Gmail 的“更安全的应用程序”

    我们可以在 PHPmailer 中实施哪些安全措施 使其成为更安全的 Gmail 应用程序 https support google com accounts answer 6010255 https support google com
  • ASP.NET MVC HttpException 消息未显示在客户端上

    我正在使用 asp net mvc 构建 RESTful Web api 它返回纯 json 数据 在我的客户端上 我使用backbone js 与其进行通信 我的问题是 如何在 JavaScript 中捕获消息 例如 如果用户没有删除权限
  • 使用 MVC 5 RouteArea 属性时找不到默认区域视图

    我有一个包含多个区域的 MVC5 项目 我有一个默认区域 名为Default 并在其中有一个默认控制器 名为DefaultController 这可以通过站点路径访问 RouteArea public class DefaultContro
  • MVC 4 文本框未在回发时更新

    我有一个使用 modelview 对象的表单 该对象在提交表单的回发时不会更新文本框值 提交表单时 我编辑绑定到文本框的对象的属性 当表单返回时 对象属性仍然更改 但文本框值不会更改 这就像文本框值被缓存并且不会改变 我该如何解决 文本框默
  • 后退按钮不会导致回发到 MVC 中的控制器操作

    当我在 Win7 上的 IE10 或 Chrome 中单击后退按钮时 它不会到达 MVC 控制器中的断点 IE 开发者工具中的 网络 选项卡显示 304 未修改 并且 Fiddler 未捕获该请求 我期待着回帖 这样我就可以在我的控制器中工
  • PHP 中的 MD5 替代方案? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Google Analytics API 显示页面浏览量

    使用 NET MVC 3 我想在网站的每个页面上显示页面视图 我已经设置了谷歌分析 我知道有一个 API 但不知道从哪里开始 有什么指示可以说明我需要什么 更具体地说 要查看什么来显示页面视图 在 Views Shared 文件夹中创建一个
  • 类型违反了继承安全规则:“System.Net.Http.WebRequestHandler”

    我在 MVC 应用程序的 web config 中有以下程序集引用
  • 重载控制器动作

    几分钟前 当我尝试在我的一个控制器中重载操作时 我有点惊讶 I had public ActionResult Get return PartialView return all things I added public ActionRe
  • 将自定义 ValueProviderFactories 添加到 ASP.NET MVC3?

    我试图尝试将 Protobuf ValueProviderFactory 添加到 MVC3 以便我可以选择 MIME 类型并将原始数据反序列化为操作参数的对象 我还可以使用它来更改默认的 Json 序列化器 看着JsonValueProvi

随机推荐

  • C# 发送带有附件的电子邮件(图片)

    我的方法使用 SMTP 中继服务器发送电子邮件 一切正常 电子邮件已发送 除了附件 图像 以某种方式压缩 不存在并且无法从电子邮件中检索之外 该方法如下所示 public static bool SendEmail HttpPostedFi
  • GitHub API - 如何确定文件是否实际上是符号链接?

    通过 GitHub API 查询符号链接时 如果符号链接指向文件而不是目录 我会得到不同的结果 后者表现得更好 因为它会返回 type symlink 作为其 JSON 的一部分 而前者返回 type file 例子文件符号链接 https
  • 动态插入 3 个图像到水平滚动视图或 Viewpager

    下面显示了我正在寻找的图像 目前我正在使用视图寻呼机和圆圈指示器 在视图页面中 它仅显示单个图像 我想要在一个viewpager中显示三张图像 如图所示 当我滑动该页面时 再次从服务器加载三个不同的图像 并在下面显示文本 这个怎么做 对此有
  • 使用已知和未知字段反序列化 json

    给出以下 json 结果 默认的 json 结果有一组已知的字段 id 7908 name product name 但可以使用其他字段进行扩展 在本例中 unknown field name 1 and unknown field nam
  • jQuery - 选择具有特定样式的子项

    我不知道如何在以下示例中选择第一个跨度 div class sp span abc span span xyz span div 我尝试过使用这个 但没有成功 div sp span visibility hidden not work t
  • 使用 XCode 4.5 运行 iOS 5.1 模拟器时出现问题

    我最近将 XCode 升级到了 4 5 版本 现在当我尝试开发 iOS 5 0 5 1 的应用程序时遇到了问题 我开发了一个简单的 iPad 游戏 用户需要将图像与相应的单词进行匹配 所有这些项目都存储在 UIImageView 中 如果相
  • 适用于 iOS 8 和 iOS 9 的自定义 Unwind Segue

    我的问题是 如何让以下自定义展开转场在 iOS 9 之前版本的设备以及运行 iOS 9 的设备上工作 我有一个显示视图控制器的自定义 Segue 然后有一个相应的自定义展开 Segue 这段代码在 iOS 8 中运行良好 是通过创建 UIS
  • 将 jzy3d.canvas 转换为 awt.component

    我需要将 jzy3d 画布转换为 java awt component 我想使用 JCombobox 和按钮在框架中显示图表 但是当我想将画布转换为组件时 程序被删除 谢谢您的回答 我已经尝试过this https stackoverflo
  • Spring 5 WebFlux 中的缓存

    有没有办法在 Spring 5 中缓存来自 WebClient 的 Flux 我尝试过这个 但没有缓存任何东西 RestController SpringBootApplication EnableCaching public class
  • 如何标记相同的熊猫数据框行?

    我有一个像这样的大熊猫数据框 log apple watermelon orange lemon grapes 1 1 1 yes 0 0 1 2 0 1 0 0 1 True 0 0 0 2 2 0 0 0 0 2 2 1 1 yes 0
  • gcc 对 alloca 的处理是怎么回事?

    在大多数平台上 alloca只是归结为堆栈指针的内联调整 例如 从rsp在 x64 上 加上一些维护堆栈对齐的逻辑 I was looking at the code that gcc generates for alloca and it
  • paypal.HostedFields.isEligible() 始终返回 False :Paypal 借记卡/信用卡付款

    我想在我的网站上添加由 PayPal 提供支持的借记卡 信用卡付款 我正在按照指南进行操作 https developer paypal com docs business checkout advanced card payments h
  • Gdb - 打印数组或数组元素,具有各种大小的元素

    汇编代码 yasm section data src db 1 2 3 的每个元素src数组是1个字节 In GDB 如何打印整个数组或指定索引处的元素 例如打印值为 2 的元素 好的 在 Michael Petch 的许可下 我想自己给出
  • 如何在同一张图片中定位多个物体?

    我是 TensorFlow 的新手 目前 我正在TensorFlow网站上测试一些分类示例 卷积神经网络 它解释了如何将输入图像分类到预定义的类中 但问题是 我不知道如何在相同的图像 例如 我有一个带有猫和狗的输入图像 我希望我的图形在输出
  • 如何找到与输入元素最接近且处于同一级别的标签

    我动态添加input我的表单中的元素 每个逻辑代码块如下所示
  • RuntimeError:切勿在任务 Celery 中调用 result.get()

    我正在使用 celery 将任务发送到远程服务器并尝试返回结果 任务状态不断更新更新状态 http docs celeryproject org en latest reference celery app task html celery
  • 自定义静音/取消静音按钮 Youtube API

    Preface 我想说我已经尽力避免使这个问题成为重复的问题 即自己搜索谷歌 阅读很多其他类似的问题等 我发现了很多真正有用的东西 这些东西使我遇到了这种特定情况我有代码可以展示 所以希望我的最后一个问题能够清晰且可以回答 我有一个使用纯
  • 为什么Sequelize迁移创建表但模型无法连接到数据库

    我正在学习如何在 Nodejs 中使用 Sequelize ORM 并将数据保存在 Postgres 数据库中 我的目标是将用户数据插入Users桌子 我已经使用迁移创建了该表 并且它有效 但是 我无法保存用户数据 例如 我关注了很多资源T
  • Android 后退按钮和进度对话框

    我有一个异步任务在工作时显示进度对话框 它调用在UiThread上运行从内部后台操作显示进度对话框 在运行时我想允许使用后退按钮取消操作 其他人遇到过这个问题 当 ProgressDialog 正在运行时 后退按钮不起作用 https st
  • 授权失败时将用户重定向到特定视图?

    我有以下代码 AcceptVerbs HttpVerbs Post Authorize Roles RoleKeys Administrators public ActionResult Edit int id FormCollection