首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重定向到身份服务器登录的角度?

如何重定向到身份服务器登录的角度?
EN

Stack Overflow用户
提问于 2020-08-24 13:06:52
回答 3查看 890关注 0票数 0

当用户访问应用程序时,我希望立即被重定向到标识服务器。使用当前的设置,我有一个登录按钮,它在单击时将用户重定向到ID服务器,但我希望删除该按钮,以便在打开应用程序时发生。

这是我的app.component.ts文件

代码语言:javascript
复制
import { OidcSecurityService } from 'angular-auth-oidc-client';

export class AppComponent implements OnInit {

  constructor(private ref: ChangeDetectorRef, public oidcSecurityService: OidcSecurityService) {
  }
  
  ngOnInit() {

    this.oidcSecurityService
    .checkAuth()
    .subscribe((auth) => console.log('is authenticated', auth));
    
  login() {
    this.oidcSecurityService.authorize();
  }
}

以及相应的html。

代码语言:javascript
复制
<div>
    <button (click)="login()">Login</button>
</div>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-24 13:49:48

如果这是一个有效的选项,我个人建议切换到角OAuth2-oidc。(https://www.npmjs.com/package/angular-oauth2-oidc)

您可以在app.component.ts中这样做:

代码语言:javascript
复制
this.oauthService.tryLogin().then((success: boolean) => {
  if (!success) this.oauthService.initCodeFlow();
});
票数 0
EN

Stack Overflow用户

发布于 2020-08-24 13:29:30

从路由器导入{路由器}。在toyr构造函数router: Router上设置它,然后

代码语言:javascript
复制
this.oidcSecurityService.checkAuth().subscribe((auth) => router.navigateByUrl('Your URL'); 
票数 0
EN

Stack Overflow用户

发布于 2020-08-24 13:45:57

通过实现CanActivate接口,您可以在auth卫士的帮助下解决问题。如果canActivate返回false,则取消对路由的导航,我们可以使用它授权用户/将用户重定向到登录页面。

每个需要经过身份验证的用户的路由都会在路由定义中的canActivate属性中引用您的auth保护。

代码语言:javascript
复制
  { 
    path: 'admin', 
    component: AdminComponent, 
    canActivate: [AuthGuard]
  }

奥斯警卫:

代码语言:javascript
复制
@Injectable({
  providedIn: 'root',
})
export class AuthGuard implements CanActivate {
constructor(private oidcSecurityService: OidcSecurityService ) {}

  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    return this.oidcSecurityService.checkAuth().pipe(
     tap(isAuthenticated => {
         if (!isAuthenticated) {
             this.oidcSecurityService.authorize();
         }
     })
   );
  }

如果需要更多帮助,请查看docs 这里。尽管如此,医生们并没有提供一个可观察的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63561679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档