asp.net – CookieAuthenticationOptions.AuthenticationType用于什么
|
在我的应用程序的Asp.Net Identity Auth中间件设置中我有 app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Login/"),//AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,Provider = new CookieAuthenticationProvider {
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<MyUserManager,MyUser>(
TimeSpan.FromMinutes(30),(manager,user) => manager.CreateIdentityAsync(user,DefaultAuthenticationTypes.ApplicationCookie)
),},});
我从另一个应用程序复制了这个,我只是注意到如果我取消注释AuthenticationType行,登录成功(我从我的控制器写入记录器中的成功消息)但总是重定向回登录屏幕. 在documentation for CookieAuthenticationOptions它说
我真的不明白这意味着什么,为什么这会导致我的登录请求被重定向(成功登录后不会更少),以及这个选项对什么有用. 解决方法这是一个字符串,可以是任何东西.但这是身份验证类型的标识符.您可以拥有多种身份验证类型:您的数据库与用户,Google,Facebook等.据我所知,这是在登录时添加为生成的Cookie的声明.您在签出用户时需要知道身份验证提供程序.如果您的身份验证中间件定义如下: app.UseCookieAuthentication(new CookieAuthenticationOptions {
LoginPath = new PathString("/Login/"),AuthenticationType = "My-Magical-Authentication",// etc...
},});
然后为用户签名你需要相同的魔术字符串:AuthenticationManager.SignOut(“My-Magical-Authentication”) 在创建主体时,此字符串也会传递给ClaimsIdentity.并且没有AuthenticationType主体无法进行身份验证because: /// <summary>
/// Gets a value that indicates whether the identity has been authenticated.
/// </summary>
///
/// <returns>
/// true if the identity has been authenticated; otherwise,false.
/// </returns>
public virtual bool IsAuthenticated
{
get
{
return !string.IsNullOrEmpty(this.m_authenticationType);
}
}
此方法IsAuthenticated通过整个MVC代码库使用,所有身份验证机制都依赖于此. 理论上,您也可以通过多个提供商登录,一次只签出其中一个,其他提供商仍然可以进行身份验证.虽然我从未尝试过这个. 我刚刚发现的另一个用途 – 如果你没有在中间件配置中提供CookieName,那么Options.CookieName = CookieAuthenticationDefaults.CookiePrefix Options.AuthenticationType; (see second if statement in constructor). 我敢肯定有更多地方可以使用它.但最重要的是提供它并与名称保持一致,否则您将在身份验证系统中获得微妙的错误. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.Net Web Api基于令牌的授权,没有OWIN和AspNet.Identity
- .net – 如何在同一个域但不同的主机上共享本地存储令牌?
- asp.net-mvc – 使用IIS基本身份验证的OWIN身份验证
- asp.net MVC的Html.RadioButton生成id和名称相同
- asp.net – IE 8和客户端缓存
- 用AJAX实现的无刷新的分页实现代码(asp.net)
- ASP.NET MVC项目“不支持此安装”
- 如何刷新#include文件 – 它们在IIS7 / ASP.NET上进行缓存
- asp.net – Session_End不启动?
- asp.net – IIS 7禁用“需要SSL”
- asp.net – 在Web应用程序中排队长时间运行的任务
- asp.net-core – ASP .NET Core默认语言总是英文
- asp.net-mvc – 回发无法使用ASP.NET路由(视图状
- 如何在ASP.NET中使用列表集合作为Repeater数据源
- asp.net-mvc – ASP.NET MVC Spark视图引擎
- asp.net – 无法加载文件或程序集App_Licenses
- asp-classic – 经典ASP页面可以在Azure中运行吗
- asp.net-mvc-3 – ASP.Net Mvc 3 Url.Action方法
- asp.net – 正在生成无效的Webresource.axd参数
- 模型 – 视图 – 控制器 – ASP.NET MVC:使用Se
