Вы можете попытаться сгенерировать токен (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/