繁体   English   中英

类型上不存在属性.. 错误。 这里有什么问题?

[英]Property doesn't exist on type.. error. What is wrong here?

我在这里发帖希望你们中的一个能帮助我。 我的编程知识很少,我被要求在 Angular 和 ASP.NET Core MVC 3 中建立一个简单的电子商务网站。所以如果他/她是,下面的代码应该不会注销用户已登录但尝试通过 url 访问管理员页面。 这是我的教授告诉我们使用的一些代码,但出于某种原因它对我不起作用。 他使用的是旧版本的 Angular,例如,他使用 .map(),我必须使用 .pipe(map()),而他使用 response.json().role,我只使用 response.role。 我的 IDE 在客户端登录方法中围绕 response.authenticated 和 response.role 向我显示以下错误

“boolean”类型不存在属性“已验证”(或“角色”)。

我怀疑问题出在客户端登录方法上返回多个参数,或者是由 the.pipe(map()) 引起的。 老实说,我在这里一无所知。 我将不胜感激任何指导

登录:

login(): Observable<any> {
    this.authenticated = false;
    return this.repo.login(this.name, this.password).pipe(
        map(response => {           
            if (response.authenticated == 'true') {
                this.authenticated = true;
                this.password = null;
                this.role = response.role;

                if (this.role == 'Administrator') {
                   this.router.navigateByUrl("/admin/overview");
                    this.admin = true;
                }
                else {
                    this.router.navigateByUrl("/");
                }
            }                
            return this.authenticated;
        }),
        catchError(e => {
            this.authenticated = false;
            return of(false);
        })
    );
}

服务器端登录:

 [HttpPost("/api/account/login")]
        public async Task<IActionResult> Login([FromBody] LoginViewModel creds) {
            if (ModelState.IsValid && await DoLogin(creds)) {
                IdentityUser user = await userManager.FindByNameAsync(creds.Name);

                if (await userManager.IsInRoleAsync(user, "Administrator"))

                    return Ok(new { authenticated = "true", role = "Administrator"} );
                else
                    return Ok( new { authenticated = "true", role = "NoAdministrator" }); 
            }
            return BadRequest();
        }

错误很明显。 response不是访问其成员的对象(验证)。

这返回布尔值:

this.repo.login(this.name, this.password);

将您的条件更改为:

response == 'true'

要么

根据您的后端,响应是一个对象。 this.repo.login返回类型更改为任意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM