首页 > 解决方案 > 社交登录 - 权限

问题描述

我有一个关于角度样板和社交登录方式的问题。根据我收集的信息,我们可以绕过“AuthConfigurer.cs”中定义的默认授权,例如。

`if (bool.Parse(configuration["Authentication:JwtBearer:IsEnabled"]))
            {
                services.AddAuthentication(options => {
                    options.DefaultAuthenticateScheme = "JwtBearer";
                    options.DefaultChallengeScheme = "JwtBearer";
             }).AddJwtBearer("JwtBearer", options => .........
                {`

然后当我们尝试登录时,我们使用用户名和密码验证用户,以便我们可以返回带有不记名令牌和用户 ID 的结果模型。

public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
    {
        var loginResult = await GetLoginResultAsync(
            model.UserNameOrEmailAddress,
            model.Password,
            GetTenancyNameOrNull()
        );

        var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity));

        return new AuthenticateResultModel
        {
            AccessToken = accessToken,
            EncryptedAccessToken = GetEncrpyedAccessToken(accessToken),
            ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds,
            UserId = loginResult.User.Id
        };
    }

看起来很简单,但是在查看我在论坛上找到的示例和建议时,我们可以使用多种方法来处理身份验证,例如。

if (bool.Parse(configuration["Authentication:Microsoft:IsEnabled"]))

services.AddAuthentication().AddGoogle(googleOptions =>
{
    microsoftOptions.ClientId = configuration["Authentication:Microsoft:ClientId"];
    microsoftOptions.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
});

所以我真正关心的问题,或者更确切地说是我的问题是,如果我们绕过不记名令牌并将其更改为 Microsoft 之类的东西,然后我们对用户进行身份验证,接下来该怎么办?

我们如何将各种页面的权限放在这个经过身份验证的“用户”上?

我们可以在没有具有权限的真实样板用户的情况下设置授权吗?如果可以,那该怎么办?我们如何访问我们网站的部分内容?

标签: angularaspnetboilerplate

解决方案


推荐阅读