我目前正在开发具有 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
}
跃然一笑
幕布斯7119047
相关分类