/// <summary> /// 授予资源所有者凭据 /// 当客户端请求为 grant_type=password 时触发 /// </summary> /// <param name="arg"></param> /// <returns></returns> private System.Threading.Tasks.Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext arg) { //这里需要验证用户登录信息以及客户端信息 DSCMA user = null; YFPLUS_Client client = null; using (DSCSYSEntities context = new DSCSYSEntities()) { user = new UserService().GetUser(arg.UserName, arg.Password); client = context.YFPLUS_Client.AsNoTracking().FirstOrDefault(s => s.ClientIdentify == arg.ClientId); } if (user != null) { List <Claim> claims = new List <Claim>(); claims.Add(new Claim("ClientID", client.ID + "")); claims.AddRange(arg.Scope.Select(x => new Claim("urn:oauth:scope", x))); claims.Add(new Claim("UserID", user.MA001 + "")); var identity = new ClaimsIdentity( new GenericIdentity(user.MA001, OAuthDefaults.AuthenticationType), claims); arg.Validated(identity); } return(Task.FromResult(0)); }
/// <summary> /// 专给OAUTH用的,不想引用注入框架了 /// </summary> /// <param name="username"></param> /// <param name="password"></param> /// <returns></returns> public DSCMA GetUser(string username, string password) { using (dbContext = new DSCSYSEntities()) { string pwd = Encode(EnUser(username.ToCharArray()), password.ToCharArray()); DSCMA dscma = dbContext.DSCMA.Where(o => o.MA001.Equals(username) && o.MA003.Equals(pwd)) .FirstOrDefault(); return(dscma); } }
public bool Login(string username, string password) { string pwd = Encode(EnUser(username.ToCharArray()), password.ToCharArray()); DSCMA dscma = dbContext.DSCMA.Where(o => o.MA001.Equals(username)) .FirstOrDefault(); if (dscma == null) { return(false); } if (!dscma.MA003.Equals(pwd)) { return(false); } return(true); }