Единый вход между ASP.NET MVC и Angular 6 - PullRequest
0 голосов
/ 20 сентября 2018

В настоящее время я использую ASP.NET MVC и Web Api для аутентификации пользователей.Я хочу, чтобы мои пользователи входили через мою страницу входа ASP.NET MVC, но проходили аутентификацию для доступа к моему приложению Angular 6.

Я хочу использовать этот подход, потому что мне нужны ссылки на другие приложения, требующие аутентификации.в будущем, но разрешить пользователю доступ к этим приложениям после входа на странице входа в систему.

Какой метод единого входа можно использовать для аутентификации пользователей?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы можете попытаться сгенерировать токен (JWT) после аутентификации, используя свой логин ASP.NET MVC.

public ActionResult Test()
{
    string currentUser = User.Identity.GetUserName();
    if (currentUser.Length != 0)
    {
        // build JWT Token
        DataAccess dataAccess = new DataAccess();
        ViewBag.Token = dataAccess.BuildTokenObject(currentUser).BearerToken;
    }
    return View();
}

Функция сборки токена.Вы можете установить время истечения токена, вы можете в Google JWT получить подробный код по установке времени истечения в токене.

public TokenInfo BuildTokenObject(string user)
{
   TokenInfo token = new TokenInfo();
   UserRole roleInfo = new UserRole();
   List<ClaimInfo> claims = new List<ClaimInfo>();

   roleInfo = GetRole(user);
   token.UserName = user;
   token.BearerToken = new Guid().ToString();
   token.RoleName = roleInfo.Role_Name;
   token.IsSysAdmin = roleInfo.isSysAdmin;
   token.Claims = GetClaims(roleInfo.Role_Name);

   // Set JWT bearer token
   token.IsAuthenticated = token.RoleName == "" ? false : true;
   token.BearerToken = BuildJwtToken(token);
   return token;
}

Угловое приложение для чтения токена с помощью Route Guard.если есть проблемы с аутентификацией, тогда перенаправьте на страницу ошибки.

export class AuthGuardService implements CanActivate {

    constructor(private _authService: AuthService, 
            private _router: Router) {}

    canActivate(): Observable<boolean> | Promise<boolean> | boolean {
        // check if token has expired
        if (this._authService.isAuthenticated()) {
            return true;
        } else {
           this._router.navigate(['/error']);
            return false;
        }
   }    
}

функция для чтения срока действия токена.

isAuthenticated(): boolean {        
    let jwt = localStorage.getItem('cs-token');
    if (HELPER.isTokenExpired(jwt)) {
        return false;
    } else {
        return true;
    }
}

дополнительная ссылка: https://jwt.io/

0 голосов
/ 20 сентября 2018

Я могу сгенерировать токен доступа в своем приложении mvc и аутентифицироваться, но как я могу аутентифицировать пользователя в моем угловом приложении, используя тот же токен доступа?

Лучший подходне для создания пользовательских токенов.Вместо этого вы хотите использовать отраслевой стандарт - OAuth 2.0 с OpenID Connect.

Вы можете либо настроить IdentityServer самостоятельно, либо использовать провайдеров идентификации, таких как Azure Active Directory, Auth0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...