asp.net-core – 重定向登录到Controller Action
从使用个人用户帐户的ASP.NET 5 Web应用程序模板开始,我已设法使用Microsoft帐户进行外部身份验证.当用户单击Login时,他们将被重定向到AccountController中的ExternalLogin,就像这样
<form asp-controller="Account" asp-action="ExternalLogin" method="post" asp-route-returnurl="@ViewData["ReturnUrl"]" class="nav navbar-right"> <button type="submit" class="btn btn-null nav navbar-nav navbar-right" name="provider" value="Microsoft" title="Log in"><span class="fa fa-sign-in"/> Log In</button> </form> 这让他们使用他们的Microsoft帐户登录,所有似乎都运行良好.但是如何拦截直接尝试访问特权操作[授权] 编辑1尝试遵循@Yves的建议我在Filters文件夹中创建了CustomAutorizationFilter.它不会检查任何条件 public class CustomAutorizationFilter : IAuthorizationFilter { public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context) { //if (...) // Check you conditions here //{ context.Result = new RedirectToActionResult("ExternalLogin","Account",null); //} } } 并编辑了ConfigureServices,如下所示 services.AddMvc(config => { config.Filters.Add(typeof(Filters.CustomAutorizationFilter)); }); 当我在本地运行应用程序时,它不再进入主页.它返回一个空白的http:// localhost:52711 / Account / ExternalLogin 显然有很多我不明白. 编辑2:这是ExternalLogin的签名 // POST: /Account/ExternalLogin [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public IActionResult ExternalLogin(string provider,string returnUrl = null) 这就是ActiveLogin在ASP.Net 5 Web App Template中开箱即用的方式. 解决方法
您可以注册IAuthorizationFilter或IActionFilter实现来完成此任务.在这些过滤器中,您可以检查请求是否正在尝试访问特权操作(如果用户已登录或具有足够的权限).
如果您使用的是AutorizeAttribute,我建议您使用AutorizationFilter. 这是一个例子: MVC在每个动作执行之前调用IAuthorizationFilter.OnAuthorization方法. public class CustomAuthorizationFilter : IAuthorizationFilter { public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context) { if (...) // Check you conditions here { context.Result = new RedirectToActionResult("ExternalLogin",null); } } } 要注册此过滤器,请在Startup.cs中编辑ConfigureServices方法: services.AddMvc(config => { config.Filters.Add(typeof(CustomAuthorizationFilter )); }); 或者,如果您想使用自己的属性,可以使用ActionFilter的OnActionExecuting方法检查是否一切都按照您的意愿发生…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET身份验证 – 多个应用程序的一个登录系统
- .Net和Asp.net
- asp.net – 通过ajax将jquery中的数组传递给c#webmethod
- One to One 的数据库模型设计与NHibernate配置
- asp.net-mvc – 什么时候项目在MVC架构中有自己的控制器?
- asp.net – 带有WebAPI的Fiddler表现得很不稳定
- ABP官方文档(三十二)【MVC Controllers】
- asp.net-mvc – 在IIS7上部署MVC应用程序的最佳实践
- asp.net-mvc – 部分视图模型无法解析
- 使用VSCode,DNX和kestrel运行第一个ASP.NET 5应用程序会导致