asp.net – 设置身份验证表单loginUrl动态?
发布时间:2020-12-16 06:23:55 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET MVC站点,它在操作和控制器类上使用表单身份验证和自定义AuthorizeAttribute. 我在我的web.config文件中有这个: authentication mode="Forms" forms loginUrl="~/Account/LogOn" timeout="2880" //authentication 当网站处于“正常”模式时,
我有一个ASP.NET MVC站点,它在操作和控制器类上使用表单身份验证和自定义AuthorizeAttribute.
我在我的web.config文件中有这个: <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication> 当网站处于“正常”模式时,这可以正常工作.需要登录的用户被重定向到此页面. 但是当我切换到测试模式时,所有控制器都将被锁定,并且还会锁定AccountController. 我现在需要在我处于测试模式时使用loginUrl来指向未锁定的控制器操作,这是针对测试场景的特殊操作. 如何更改loginUrl或是否可以从AuthorizeAttribute重定向? 解决方法
我们所做的是使用自定义的Authorize属性覆盖,该属性重定向HandleUnauthorizedRequest函数,如下所示:
public class AuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute { public string LoginController { get; set; } public string LoginAction { get; set; } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { if (string.IsNullOrEmpty(LoginController)&&string.IsNullOrEmpty(LoginAction)) base.HandleUnauthorizedRequest(filterContext); filterContext.Result =new RedirectToRouteResult( new RouteValueDictionary(new { controller = LoginController,action = LoginAction,returnUrl = HttpContext.Current.Request.Url })); } } 这样,我们可以通过分配控制器和要执行的操作来为任何authorize属性指定登录路由.否则它的行为类似于标准的authorize属性. 您可以根据处于测试模式或实时模式将其更改为重定向. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Azure网站上脚本/样式的长时间等待(TTFB)时间
- ASP.NET MVC C#在类中获取控制器和操作名称
- asp.net-mvc – 存储库模式 – 如何正确处理JOIN和复杂查询
- asp.net – mvc部署需要哪些文件?
- 为什么在ASP.Net中向StatusDescription添加换行符会关闭连接
- asp.net-mvc-3 – 如何从ASP.NET MVC#输出中删除空格?
- asp.net-mvc – Asp.net mvc 301从www.domain.com重定向到d
- asp.net-mvc – Asp.Net MVC和HTML5 PUSH通知
- VS2017中建立ASP.NET MVC 4.0项目
- asp.net-core – openid connect – 在登录期间识别租户
推荐文章
站长推荐
- asp.net – 在Azure上增加AppPool超时的优点/缺点
- asp.net-mvc – 如何在窗体发布后检查我的视图中
- asp.net – 在编辑视图中持久保存实体密钥的更安
- asp.net-mvc – 使用UIHint的ASP.NET MVC 3自定义
- asp.net – WebApi:将参数映射到标头值
- asp.net-mvc-3 – 你能在ASP.net MVC3中使用嵌套
- asp.net – 为jQuery寻找一个好的数据网格插件
- ASP.NET MVC中的runat =“server”标签的状态是什
- ASP.NET – jQuery ajax调用队列而不是并发运行?
- asp.net-mvc-4 – HttpPostedFileBase始终保持为
热点阅读