Exemplo n.º 1
0
        public async Task <AccessTokenViewModel> GetAccessToken(SysUser user)
        {
            if (user != null)
            {
                //if (user.LockoutEndDateUtc > DateTimeLocal.Now)
                //{
                //    ModelState.AddModelError("", "用户已锁定");
                //}
                //else {
                ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager,
                                                                                    OAuthDefaults.AuthenticationType);

                ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager,
                                                                                     CookieAuthenticationDefaults.AuthenticationType);

                AuthenticationProperties properties = ApplicationOAuthProvider.CreateProperties(user.UserName);
                Authentication.SignIn(properties, oAuthIdentity, cookieIdentity);
                //生成ticket
                AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
                var currentUtc = DateTime.Now;
                ticket.Properties.IssuedUtc  = currentUtc;
                ticket.Properties.ExpiresUtc = currentUtc.Add(Startup.OAuthOptions.AccessTokenExpireTimeSpan);
                var token    = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
                var expirers = (Int32)Startup.OAuthOptions.AccessTokenExpireTimeSpan.TotalSeconds;
                var roleid   = user.Roles.FirstOrDefault().RoleId;
                var rolename = _isysRoleService.GetById(roleid).Name;
                return(new AccessTokenViewModel(token, "bearer", user.UserName, rolename, expirers - 1));
                //}
            }
            ModelState.AddModelError("", "无效的登录尝试");
            return(null);
        }