public async Task <ActionResult <UserInfoVo> > GetInfo() { // get jwt StringValues input; Request.Headers.TryGetValue("Authorization", out input); string auth = input.ToString(); string jwt = auth.Substring("Bearer ".Length); if (string.IsNullOrEmpty(jwt)) { return(new UnauthorizedResult()); } // get username from orleans OrleanService orlean = await OrleanService.GetInstance(); IValue grain = orlean.GetValueGrain(jwt); string username = await grain.GetAsync(); if (string.IsNullOrEmpty(username)) { return(new UnauthorizedResult()); } User user = await _context.Users.FindAsync(username); UserInfoVo ret = new UserInfoVo(user); return(new JsonResult(ret)); }
public async Task <ActionResult <string> > PostLogin(LoginVo item) { // check params string ret = item.IsValid(); if (!string.IsNullOrEmpty(ret)) { return(ret); } // check has such user User user = await _context.Users.FindAsync(item.username.ToLower()); if (user == null) { return("user not exists"); } // check has logined OrleanService orlean = await OrleanService.GetInstance(); IValue grain = orlean.GetValueGrain(item.username.ToLower()); string jwt = await grain.GetAsync(); if (!string.IsNullOrEmpty(jwt)) { return(jwt); } // check password if (user.Password != CryptoService.SHA1(item.password)) { return("invalid password"); } jwt = System.Guid.NewGuid().ToString(); // cache session await grain.SetAsync(jwt); IValue grainR = orlean.GetValueGrain(jwt); await grainR.SetAsync(item.username.ToLower()); return(jwt); }