2

メールを知っていてもまだ自分のサービスにログインしていないユーザーにロールとアクセス許可を割り当てる方法を探しています。認証は外部認証プロバイダ(aad)を使用して行われます。StackService:ユーザーログインを先取りし、ログイン時に役割とアクセス許可を割り当てます。

私はUserAuthとUserAuthDetailsテーブルをクリアしてから、自分のログイン(ID、電子メール、ユーザー名と日付)を予期する最小のUserAuthエントリを作成しましたが、別のUserAuthエントリをサインインすると、 UserAuthDetails行。

今、私はハードコーディングの役割(および他のメタデータ)をOnAuthenticated中に適用しています。ある時点では、これをデータベースのテーブルに避けて移動しなければならないかもしれないので、実行時に先制的なアクセス割り当てを追加することができます。

理想的には、電子メールと一致するプロバイダを使用してユーザーがログインすることを想定して、適切な役割と権限を持つUserAuth行を事前に作成できる必要があります。基本的なAuthenticateServiceを実際に変更することなく、ServiceStackの拡張機能を使ってこの機能を追加できますか?

答えて

0

あなたはUSERAUTHを作成するために、正確に何を知っている限り、私はまだOnAuthenticated()にそれらを変更したいが、あなたは、ユーザーに対して作成されなければならないRoleを示していますカスタムCreateRoleEmailあなたはそれを割り当てることができる方法からそれらを調達することができます例:

public override void OnAuthenticated(IServiceBase authService, 
    IAuthSession session, IAuthTokens tokens, Dictionary<string, string> authInfo) 
{ 
    using (var db = authService.TryResolve<IDbConnectionFactory>().Open()) 
    { 
     var q = db.From<CreateRole>().Where(x => x.Email == session.Email); 
     var userRoles = db.Column<string>(q.Select(x => x.Role)); 

     var authRepo = authService.TryResolve<IAuthRepository>(); 
     var userAuth = authRepo.GetUserAuth(session, tokens); 
     authRepo.AssignRoles(userAuth, roles: userRoles); 
    } 
} 
関連する問題