ASP.NET Core 识别 Auth + Angular:登录无效

我目前正在开发具有 ASP.NET Core (2.1) API 服务器/后端和 Angular 单页应用程序前端的应用程序。


对于用户身份验证,我使用 ASP.NET Core Identity 以及其中提供的几种默认方法,AccountController用于登录、注销、注册、忘记密码等。我的 Angular 应用程序访问此 API 以执行这些操作。


Angular 客户端文件直接托管wwwroot在 ASP.NET Core 应用程序之外。我在localhost:5000.


身份验证在 ASP.NET Core 的Startup类中配置如下:


services.AddIdentity<ApplicationUser, IdentityRole>(config =>

    {

        config.SignIn.RequireConfirmedEmail = false;

        config.Password.RequiredLength = 8;

    })

    .AddEntityFrameworkStores<AppDbContext>()

    .AddDefaultTokenProviders();


// Prevent API from redirecting to login or Access Denied screens (Angular handles these).

services.ConfigureApplicationCookie(options =>

{

    options.Events.OnRedirectToLogin = context =>

    {

        context.Response.StatusCode = 401;

        return Task.CompletedTask;

    };

    options.Events.OnRedirectToAccessDenied = context =>

    {

        context.Response.StatusCode = 403;

        return Task.CompletedTask;

    };

});

注册和忘记密码都可以顺利运行。调用 API 并采取适当的操作。


登录似乎有效:该方法在 Angular 中调用:


@Injectable()

export class AuthService extends BaseService {

  constructor(private httpClient: HttpClient) {

    super(httpClient, `${config.SERVER_API_URL}/account`);

  }


  // Snip


  login(login: Login): Observable<boolean> {

    return this.httpClient.post<boolean>(`${this.actionUrl}/Login`, login)

      .catch(this.handleError);

  }


  // Snip

}


摇曳的蔷薇
浏览 293回答 3
3回答

跃然一笑

为了让身份验证处理程序在请求上运行,您需要app.UseAuthentication();在中间件管道中(在需要它的中间件之前,如 MVC)。

幕布斯7119047

这是一个远景,但也许令牌需要:在实际令牌前面有“Bearer”(带有空格)。
打开App,查看更多内容
随时随地看视频慕课网APP