zoukankan      html  css  js  c++  java
  • ResourceOwnerPassword模式使用数据库.

    有时候, ResourceOwnerPassword模式有用的, 可以用来代替我们原来管理程序的开发方式.

    因为管理程序本身拥有用户数据的权限嘛, 并不是第三方应用, 无需要授权

    集成很简单.

    1. 添加ResourceOwnPasswordValidator验证程序

    public class ResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
        {
            public ResourceOwnerPasswordValidator()
            {
    
            }
    
            public Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
            {
                //根据context.UserName和context.Password与数据库的数据做校验,判断是否合法
                if (context.UserName == "jian1" && context.Password == "j1")
                {
                    context.Result = new GrantValidationResult(
                     subject: context.UserName,
                     authenticationMethod:  OidcConstants.AuthenticationMethods.Password);
                }
                //else
                //{
    
                //    //验证失败
                //    context.Result = new GrantValidationResult(
                //        TokenRequestErrors.InvalidGrant, 
                //        "invalid custom credential",
                //        );
                //}
                return Task.FromResult(0);
            }
             
        }

    2. 注册IdentityServer的时候注入这个验证程序

    // 使用内存存储,密钥,客户端和资源来配置身份服务器。 测试环境
                services.AddIdentityServer()
                    .AddDeveloperSigningCredential()
                    .AddInMemoryApiResources(AuthorizationConfig.ApiResources())
                    .AddInMemoryClients(AuthorizationConfig.Clients())
                    .AddInMemoryIdentityResources(AuthorizationConfig.GetIdentityResources()) 
                    //添加自定义的ResourceOwnValidator验证程序
                    
    .AddResourceOwnerValidator<Models.ResourceOwnerPasswordValidator>()
    
                    .AddProfileService<Services.ProfileService>();
  • 相关阅读:
    做过的笔试题
    (转)32位机器中int的字长
    JS_void()
    JS_增加事件,移除事件,动态元素的增删事件研究
    JS_animate 站在别人的肩膀上
    JS_对象的方法
    JS_Class.extend
    JS_返回值
    JS_eventBind
    JS_应用对象的复制
  • 原文地址:https://www.cnblogs.com/jianjialin/p/9326503.html
Copyright © 2011-2022 走看看