热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Asp.netcore2.x踩坑记录(一)修改cookie中间件的配置不生效

一、问题背景:asp.netcore2.x新建项目:选择的是使用个人身份验证默认未授权跳转地址loginpath为IdentityAccountLogin,我想改成自己的区域内的地

一、问题


  背景:asp.net core 2.x

  新建项目:选择的是 使用个人身份验证

  默认 未授权跳转地址 loginpath为 '''Identity/Account/Login',我想改成自己的区域内的地址 '''Admin/Account/Login'

二、解决方案


 

  第一次尝试:

  在网上查看说是自定义的 AuthenticationScheme名字要和 AddCOOKIE要一致 ,就是AddAuthentication和AddCOOKIE的第一个参数,要一样,表示不是很懂,然后这么写:

services.AddAuthentication(COOKIEAuthenticationDefaults.AuthenticationScheme).AddCOOKIE(COOKIEAuthenticationDefaults.AuthenticationScheme, optiOns=>
             {
                 //options.AccessDeniedPath = "/Admin/Account/login";
                 //options.COOKIE.Name = "MyCOOKIEAuthenticationScheme";
                 //options.COOKIE.HttpOnly= false;
                 //options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
                 options.LoginPath = new PathString("/admin/account/login");
                 options.LogoutPath = new PathString("/admin/account/logout");
                 // ReturnUrlParameter requires 
                 //using Microsoft.AspNetCore.Authentication.COOKIEs;
                 options.ReturnUrlParameter = COOKIEAuthenticationDefaults.ReturnUrlParameter;
                 //options.SlidingExpiration = true;
             });

  结果:不好使- -  在未授权时,仍然是 跳转到 'Identity/Account/Login'。

  第二次尝试:将默认是AuthenticationScheme改成自定义的 Name字符串 “MyScheme”

services.AddAuthentication("MyScheme").AddCOOKIE("MyScheme", optiOns=>
             {
                 //options.AccessDeniedPath = "/Admin/Account/login";
                 //options.COOKIE.Name = "MyCOOKIEAuthenticationScheme";
                 //options.COOKIE.HttpOnly= false;
                 //options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
                 options.LoginPath = new PathString("/admin/account/login");
                 options.LogoutPath = new PathString("/admin/account/logout");
                 // ReturnUrlParameter requires 
                 //using Microsoft.AspNetCore.Authentication.COOKIEs;
                 options.ReturnUrlParameter = COOKIEAuthenticationDefaults.ReturnUrlParameter;
                 //options.SlidingExpiration = true;
             });

  结果:不好使仍然-  - 我操,表示core真的很坑,- - 官方文档 也没有说明白这方面的问题- - 就介绍了一些基本操作- - 这些最重要的却避而不谈。。。。设置的自定义属性都不生效,你还介绍怎么设置- -  难道不应该先说明生效的前提嘛,这里一万头羊驼- - 

  第三次尝试:这里是参考地址:https://www.cnblogs.com/piscesLoveCc/p/7366418.html 这里感谢这位仁兄- - 

services.AddAuthentication(optiOns=>
            {
                options.DefaultChallengeScheme = "MyScheme";
                options.DefaultSignInScheme = "MyScheme";
                options.DefaultAuthenticateScheme = "MyScheme";
            }).AddCOOKIE("MyScheme", optiOns=>
             {
                 //options.AccessDeniedPath = "/Admin/Account/login";
                 //options.COOKIE.Name = "MyCOOKIEAuthenticationScheme";
                 //options.COOKIE.HttpOnly= false;
                 //options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
                 options.LoginPath = new PathString("/admin/account/login");
                 options.LogoutPath = new PathString("/admin/account/logout");
                 // ReturnUrlParameter requires 
                 //using Microsoft.AspNetCore.Authentication.COOKIEs;
                 options.ReturnUrlParameter = COOKIEAuthenticationDefaults.ReturnUrlParameter;
                 //options.SlidingExpiration = true;
             });

  结果:终于是成功了!槽

 


推荐阅读
author-avatar
Ruby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有