当前位置: 首页 > 知识库问答 >
问题:

通过Angular 2登录表单向JWT令牌控制器传递用户名和密码

柯栋
2023-03-14

我有一个angular 2登录表单,我正试图通过API调用来调用一个JWT令牌控制器。

我的user.service.ts如下:-

login(username, password) {
  let headers = new Headers();
  headers.append('Content-Type', 'application/x-www-form-urlencoded');
  let credentials = JSON.stringify({ username, password });
  console.log(username, password);
  return this._http.post('http://localhost:5000/api/jwt', credentials, { headers: headers })
    .map(res => res.json())
    .map((res) => {
      if (res.success) {
        localStorage.setItem('auth_token', res.auth_token);
        this.loggedIn = true;
      }

      return res.success;
    });
}

当我做console.log(用户名,密码);我正在得到正确的用户名和密码输入的表单。

      [HttpPost]
  [AllowAnonymous]
  public async Task<IActionResult> Get(string username, string password)
  {

  //code here

  }

约翰

共有1个答案

谢裕
2023-03-14

您设置了一个错误的内容类型头,它必须是JSON:

headers.append('Content-Type', 'application/json');

还要确保创建了一个有效的JSON对象(JSON.stringify({username,password})无效,并且控制台收到一个javascript错误,表示该对象已中断):

let credentials = JSON.stringify({ username: username, password: password });

最后但并非最不重要的是引入一个视图模型来匹配这个结构:

public class LoginViewModel
{
    public string Username { get; set; }
    public string Password { get; set; }
}

您的控制器操作将作为参数:

public async Task<IActionResult> Get(LoginViewModel loginModel)
 类似资料:
  • 我尝试用angular2前端实现jwt令牌。当我尝试使用Postman接收带有post方法的令牌时,我接收到授权令牌,但在Angular中这样做返回空响应对象。这里是我使用的Angular服务的代码片段。 问题是,当我尝试记录时,令牌是空的,与响应相同。对于代码的后端部分,我遵循了jwt令牌的这个实现。

  • 嗨,我正在创建使用 REST API endpoint与服务器端通信的移动本机应用程序。 我以前有开发本机客户端的经验,但我将简单的令牌(随机生成的字符串)存储在存储用户信息的同一表中的数据库中。所以它就像浏览器中使用的会话,但每个请求的标头中都有令牌,而不是 cookie。 最近我发现了JWT令牌。这似乎是保护私有endpoint的好方法。您可以从移动客户端请求令牌,前提是您通过登录并获得生成的

  • 我有一个关于JWT的SSO流的简单问题 假设我们有单独的授权服务器,它为客户端应用程序/服务器和资源服务器提供JWT,客户端尝试使用该令牌访问该服务器。 问题是,资源服务器应该自己验证令牌(例如,与Auth server共享私有证书),还是应该请求Auth server为每个客户端请求验证JWT?

  • 我想把一个id作为用户的输入,传递给控制器,得到特定id的数据 当我在URL--http://localhost:8080/student/1中手动传递id时,它就起作用了 Whitelabel错误页面此应用程序没有/Error的显式映射,因此您将其视为一种后退。 Wed Jun 19 11:04:22 IST 2019出现意外错误(Type=内部服务器错误,Status=500)。模板分析过程中

  • 我正在使用laravel 5.4开发一个api 尝试使用API控制器登录时 它给我以下错误: {FatalThrowableError调用未定义的方法Illumate\Auth\TokenGuard::attempt()}

  • 我试图将数据传递给controller进行进一步处理,但在controller中得到null,然而js(ajax)的debug无论如何都会显示这个数字。可能是什么问题? Ajax: 控制器: