C# 用户登录后路由到用户帐户
我已经在ReactJS中创建了一个登录组件。用户可以使用其电子邮件和密码登录。我希望用户在成功登录后路由到他的用户帐户。我使用了JWT身份验证,身份验证正确发生 有没有办法在登录后从API获取数据?如果我可以从服务器获取userId,我可以路由到用户帐户。但是我不知道如何通过用户登录获取相关的用户数据。我该怎么做 这是我的登录组件login.js:C# 用户登录后路由到用户帐户,c#,reactjs,asp.net-core,authentication,jwt,C#,Reactjs,Asp.net Core,Authentication,Jwt,我已经在ReactJS中创建了一个登录组件。用户可以使用其电子邮件和密码登录。我希望用户在成功登录后路由到他的用户帐户。我使用了JWT身份验证,身份验证正确发生 有没有办法在登录后从API获取数据?如果我可以从服务器获取userId,我可以路由到用户帐户。但是我不知道如何通过用户登录获取相关的用户数据。我该怎么做 这是我的登录组件login.js: export default class Login extends Component { state = {}; submit
export default class Login extends Component {
state = {};
submitHandler = e => {
e.preventDefault()
const logingdata ={
email : this .Email,
password: this .Password
}
axios
.post('/api/UserLogin', logingdata)
.then(response => {
console.log(response); //to print response in console in developper tool
//const currentuser = JSON.parse(atob(response.data.token.split(".")[1]));
localStorage.setItem('login', response.data.token);
console.log(this.email);
})
.catch(error => {
console.log(error => console.log(error.response.data))
})
}
render() {
return (
<div className="outer">
<div className="inner">
<form onSubmit={ this.submitHandler}>
<h3>Log in</h3>
<div className="form-group">
<label>Email</label>
<input type="text" className="form-control" placeholder="Enter email" onChange ={ e => this.Email = e.target.value} />
</div>
<div className="form-group">
<label>Password</label>
<input type="text" className="form-control" placeholder="Enter password" onChange ={ e => this.Password = e.target.value} />
</div>
<div className="form-group">
<div className="custom-control custom-checkbox">
<input type="checkbox" className="custom-control-input" id="customCheck1" />
<label className="custom-control-label" htmlFor="customCheck1">Remember me</label>
</div>
</div>
<br></br>
<button type="submit" className="btn btn-dark btn-lg btn-block">Sign in</button>
<p className="forgot-password text-right">
Forgot <Link to= "/Forgotpassword" >password?</Link>
</p>
</form>
</div>
</div>
);
}
}
通常,userId位于JWT内部
import jwt from 'jsonwebtoken';
function getUserIdFromRawToken(raw) {
const token = jwt.decode(raw, { complete: true });
const userId = token.payload.sub
return userId
}
不知道你想做什么。您的令牌存储在本地,因此基本上,如果您也拥有后端,您可以将相关的用户数据放在那里。此外,登录后,您可能必须将令牌与每个请求一起发送到API以进行身份验证。我想根据登录输入详细信息从API获取用户ID。您是否也可以在后端包含API路由以对用户进行身份验证?这可能是一个后端discussion@alexYepes非常感谢。我用后端代码更新了这个问题。你能包括你使用控制器的路线吗?
{
[Key]
public int Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
import jwt from 'jsonwebtoken';
function getUserIdFromRawToken(raw) {
const token = jwt.decode(raw, { complete: true });
const userId = token.payload.sub
return userId
}