首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何进入returnUrl AccessDeniedPath in ASP.NET MVC 6 (ASP.NET Core)

如何进入returnUrl AccessDeniedPath in ASP.NET MVC 6 (ASP.NET Core)
EN

Stack Overflow用户
提问于 2016-04-08 06:03:55
回答 1查看 2.3K关注 0票数 2

我使用ASP.NET MVC 6的最新版本。

设置以下设置为Startup.cs文件:

代码语言:javascript
运行
复制
public void ConfigureServices(IServiceCollection services)
{
            services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
            {
                options.Cookies.ApplicationCookie.LoginPath = new PathString("/account/login");
                options.Cookies.ApplicationCookie.AccessDeniedPath = new PathString("/error/accessdenied");
                options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(1);
                options.Cookies.ApplicationCookie.SlidingExpiration = false;
                options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
                options.Cookies.ApplicationCookie.AutomaticChallenge = true;
            })
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();
}

Account中,控制器有动作Login

代码语言:javascript
运行
复制
        [HttpGet]
        [AllowAnonymous]
        public IActionResult Login(string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            return View();
        }

在上面的方法中,我没有问题获得returnUrl

在控制器中,Error也有动作AccessDenied

代码语言:javascript
运行
复制
        [AllowAnonymous]
        [HttpGet]
        public IActionResult AccessDenied(string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            return View();
        }

但是,当用户没有访问站点页面的权限时,系统会将用户转发到页面../error/accessdenied

目前,在我被重定向后,returnUrl值是null

我能否获得用户被重定向的页面的地址(以及它对LoginPath的工作)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 22:14:56

看起来它将在CookieAuthorizationHandler.HandleForbiddenAsync中发布,看看GitHub上的GitHub方法源代码,

代码语言:javascript
运行
复制
protected override async Task<bool> HandleForbiddenAsync(ChallengeContext context)
{
    var properties = new AuthenticationProperties(context.Properties);
    var returnUrl = properties.RedirectUri;
    if (string.IsNullOrEmpty(returnUrl))
    {
        returnUrl = OriginalPathBase + Request.Path + Request.QueryString;
    }
    var accessDeniedUri = Options.AccessDeniedPath + QueryString.Create(Options.ReturnUrlParameter, returnUrl);
    var redirectContext = new CookieRedirectContext(Context, Options, BuildRedirectUri(accessDeniedUri), properties);
    await Options.Events.RedirectToAccessDenied(redirectContext);
    return true;
}

您可以得到关于如何从RC1迁移到家庭储存库上的RC2的反馈。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36492624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档