// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 //https://mp.weixin.qq.com/s/3CCyvn2FUHtchIx8xhJHrw public void ConfigureServices(IServiceCollection services) { //services.AddControllers(); services.AddControllersWithViews(); #region 内存方式 //services.AddIdentityServer() // .AddDeveloperSigningCredential() // .AddInMemoryApiResources(OAuthMemoryData.GetApiResources()) // .AddInMemoryClients(OAuthMemoryData.GetClients()) // .AddTestUsers(OAuthMemoryData.GetTestUsers()); #endregion #region 数据库存储方式 1 //services.AddIdentityServer() // .AddDeveloperSigningCredential() // .AddInMemoryApiResources(OAuthMemoryData.GetApiResources()) // .AddInMemoryClients(OAuthMemoryData.GetClients()) // //.AddTestUsers(OAuthMemoryData.GetTestUsers()); // .AddResourceOwnerValidator<ResourceOwnerPasswordValidator>(); #endregion #region 数据库存储方式 2 services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryApiResources(OAuthMemoryData.GetApiResources()) //.AddInMemoryClients(OAuthMemoryData.GetClients()) .AddClientStore <ClientStore>() .AddResourceOwnerValidator <ResourceOwnerPasswordValidator>(); #endregion }
/// <summary> /// 验证用户 /// </summary> /// <param name="loginName"></param> /// <param name="password"></param> /// <returns></returns> private async Task <List <Claim> > ValidateUserAsync(string loginName, string password) { //TODO 这里可以通过用户名和密码到数据库中去验证是否存在, // 以及角色相关信息,我这里还是使用内存中已经存在的用户和密码 var user = OAuthMemoryData.GetTestUsers().Where(x => x.Username == loginName && x.Password == password).FirstOrDefault(); if (user == null) { // throw new Exception("登录失败,用户名和密码不正确"); return(null); } //var clamis = new List<Claim>(); //clamis.Add(new Claim(ClaimTypes.Name, "Alun")); //clamis.Add(new Claim(ClaimTypes.Role, "Users")); //var identity = new ClaimsIdentity(clamis, "MyLogin"); //ClaimsPrincipal principal = new ClaimsPrincipal(identity); return(new List <Claim>() { new Claim(ClaimTypes.Name, $"{loginName}") //new Claim("returnUrl", $"wwww.baidu.com"), }); }
public async Task <Client> FindClientByIdAsync(string clientId) { #region 用户名密码 var memoryClients = OAuthMemoryData.GetClients(); if (memoryClients.Any(oo => oo.ClientId == clientId)) { return(memoryClients.FirstOrDefault(oo => oo.ClientId == clientId)); } #endregion #region 通过数据库查询Client 信息 return(GetClient(clientId)); #endregion }