- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个无法解决的场景:
我正在尝试为 mvc 创建自己的自定义授权属性。我想添加的主要功能是能够更改用户不处于某个角色时重定向的位置。我不介意如果他们没有经过身份验证,系统会将它们发送回登录页面,但如果他们经过身份验证但不允许访问该操作方法,我想选择将它们发送到哪里。
这是我想做的:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public string Action;
public string Controller;
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
// if User is authenticated but not in the correct role
string url = Url.Action(this.Action, this.Controller);
httpContext.Response.Redirect(url);
}
}
作为额外的好处,我希望在进行重定向之前能够访问 ViewContext 和 TempData。
关于如何在属性中实例化 UrlHelper 和 ViewContext 有什么想法吗?
最佳答案
您可以覆盖 OnAuthorization
方法:
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
// Call the AuthorizeCore which should return true or false
if (!this.AuthorizeCore(filterContext.HttpContext))
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary()
{
{ "controller", "home" },
{ "action", "about" },
{ "id", "foo" },
});
}
}
就 ViewData 和 TempData 而言:filterContext.Controller.ViewData
和 filterContext.Controller.TempData
应该在 OnAuthorization
方法内工作。最后,如果您希望使用 UrlHelper
(在本例中没有必要,因为 RedirectToRouteResult
更好),您可以实例化它:
var urlHelper = new UrlHelper(filterContext.RequestContext);
关于asp.net - 授权属性内的 UrlHelper 和 ViewContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661405/
查看 msdn(UrlHelper.Route,UrlHelper.Link),它们看起来完全相同。是否有理由使用其中之一? 最佳答案 Route() 返回相对 URI,Link() 返回绝对 URI
我正在尝试编写一个通过的单元测试,但我的测试调用的方法调用了另一个使用 UrlHelper 类生成 URL 的方法。调用 urlHelper.Action 的结果一直返回 null。 我已经尝试模拟(
如果我在 API 调用中调用 UrlHelper.Link,该 API 调用的参数与我尝试获取 URL 的 API 端点的可选参数匹配,则无论我如何尝试,UrlHelper.Link 都会返回一个包含
让我们看看在 RouteConfig.cs 中映射的这两条路由,一条有 guid,一条没有: // Non-guid route routes.MapPageRoute( name: null
我不明白,我有这个代码: return JavaScript(string.Format( "window.location = '{0}'", UrlHelper.GenerateCon
我在 Controller ApplicationsController 中有一个方法,我需要在其中获取操作方法的基本 URL: public ActionResult MyAction(string
我正在使用 ASP.NET MVC 3 和 NUnit。我正在尝试编写一个单元来测试我的一个辅助方法。这是: public static class UrlHelperAssetExtensions
在单元测试中,我正在使用 伪造 http 上下文 var fakeHttpContext = new Mock(); var controllerContext = new Mock(); co
尝试创建用于测试目的的 URLHelper 会引发 NullReferenceException。 例子: [Fact] public async void AuthenticateAsyncTest
我在我的 Web 应用程序中使用 Ninject,作为其中的一部分,我需要在驻留在单独程序集中的 UrlHelper 扩展方法中进行一些注入(inject)。我什至无法获得对内核的静态引用,因为显然库
我想创建一个基于 Action/Controller 名称 + 路由值的 Url。 我知道可以使用 UrlHelper.Action,但我以异步方式运行该方法,因此 HttpContext.Curre
我正在开发一个 MVC Web API 应用程序,我需要从许多不同设备(例如智能手机)上的 Web 浏览器访问该应用程序。在开发过程中,我希望能够在通过手机访问网站时进行调试。为此,我设置了 Fidd
我正在使用 UrlHelper 生成 URL,但是,当我调用方法 Action(action, controller, route) 时,我收到了 ArgumentNullException。 Url
我有一些单元测试来测试 WebApi 项目中的帖子,它是一个 WebApi 1.0 版本,我已经升级到 webapi 2.0,现在在尝试构建响应时,并添加新资源的位置 ApiController.Ur
您能否提供仅使用目标 Controller 和操作在操作过滤器中使用 Urlhelper.GenerateUrl 的示例? 最佳答案 var url = UrlHelper.GenerateUrl(n
我有一个无法解决的场景: 我正在尝试为 mvc 创建自己的自定义授权属性。我想添加的主要功能是能够更改用户不处于某个角色时重定向的位置。我不介意如果他们没有经过身份验证,系统会将它们发送回登录页面,但
我需要在我的应用程序启动时设置一堆路径和 URL,即在 global.asax 中。使用 UrlHelper.Content() 是最简单的方法,但它不可用。 那么如何在 global.asax 中获
当使用 URLHelp 或 Keyword 成员定义 Visual Studio 2010 SP1 中的 C# 代码片段时,url 和关键字不会显示在屏幕: 调用代码段时 在按 Tab 自动完成代码段
在 justmock 中,我们可以通过安排构造函数调用来返回模拟实例而不是实际实例 Mock.Arragne(()=>new MyClass(Arg.IsAny())).IgnoreInstance(
我是 ASP.NET Core 的新手,现在我正试图了解 UrlHelper 的一般工作原理。 在我的 Controller 中,我想为同一 Controller 中的另一个操作创建一个绝对 URL,
我是一名优秀的程序员,十分优秀!