我是一名初学者全栈开发人员。我想制作一个简单的登录身份验证系统。我在后端使用.Net Core 3.0
,在前端使用Angular 8
,在数据库中使用MsSQL Server
。
我实现了一个提供Sign up
功能的Web API(我的问题是关于Sign in
身份验证)。我还使用Sign in
为Sign up
和Angular
UI实施了一个页面。
如果在Signing in
时用户输入了真实的密码,我应该重定向/路由到“仪表板”页面。
如果用户在Signing in
时输入了真实的密码,则我不应该在任何地方重定向/路由。
我认为我找到了解决此问题的两种方法。
第一个是POST
电子邮件和密码,由用户输入到API,然后检查数据库中键入的电子邮件的输入密码是否为true,如果为true,则重定向到仪表板页面。稍后在后端(.Net Core 3.0
)中进行检查。
例子是这样的:
public IActionResult checkPasswordIsTrue(){
if (tpyedPassword == realPassword)
{
return Redirect("http://192.168.1.22:4200/dashboard");
}
第二个是POST
电子邮件和密码,由用户输入到API,GET
是来自已键入电子邮件的真实密码。然后检查输入的密码是否正确(如果使用条件canActivate
,则使用条件路由)将其路由到仪表板页面。请在前端(Angular
)进行简短检查。
例子是这样的:
HTML
:
<button mat-raised-button (click)="signIn()" color="primary" routerLink="/dashboard" routerLinkActive="active" >Sign in</button>
和TypeScipt
文件:
signIn(): void {
this.httpClient.get(`http://192.168.1.35:32450/user/${this.user.email}`).subscribe(
(dbPassword:any)=>{
if(dbPassword==this.user.password){
isActivate=true; //so go to dashboard
}
}
)
哪种方法是正确的?如果两者都正确,哪个更有效? 解决此类问题的最佳实践方法是什么?