const express = require('express')
const users = express.Router()
const cors = require('cors')
const jwt = require('jsonwebtoken')
const User = require('../models/User')
users.use(cors())
process.env.SECRET_KEY = 'secret'
users.post('/register', (req, res) => {
const today = new Date()
const userData = {
first_name: req.body.first_name,
last_name: req.body.last_name,
email: req.body.email,
password: req.body.password,
created: today
}
User.findOne({
email: req.body.email
})
//TODO bcrypt
.then(user => {
if (!user) {
User.create(userData)
.then(user => {
const payload = {
_id: user._id,
first_name: user.first_name,
last_name: user.last_name,
email: user.email
}
let token = jwt.sign(payload, process.env.SECRET_KEY, {
expiresIn: 1440
})
res.json({ token: token })
})
.catch(err => {
res.send('error: ' + err)
})
} else {
res.json({ error: 'User already exists' })
}
})
.catch(err => {
res.send('error: ' + err)
})
})
users.post('/login', (req, res) => {
User.findOne({
email: req.body.email
})
.then(user => {
if (user) {
const payload = {
_id: user._id,
first_name: user.first_name,
last_name: user.last_name,
email: user.email
}
let token = jwt.sign(payload, process.env.SECRET_KEY, {
expiresIn: 1440
})
res.json({ token: token })
} else {
res.json({ error: 'User does not exist' })
}
})
.catch(err => {
res.send('error: ' + err)
})
})
users.get('/profile', (req, res) => {
var decoded = jwt.verify(req.headers['authorization'], process.env.SECRET_KEY)
User.findOne({
_id: decoded._id
})
.then(user => {
if (user) {
res.json(user)
} else {
res.send('User does not exist')
}
})
.catch(err => {
res.send('error: ' + err)
})
})
module.exports = users
<div class="container">
<div class="row">
<div class="col-md-6 mt-5 mx-auto">
<form (submit)="register()">
<h1 class="h3 mb-3 font-weight-normal">Register</h1>
<div class="form-group">
<label for="name">First name</label>
<input type="text" class="form-control" name="first_name" placeholder="Enter your first name" [(ngModel)]="credentials.first_name">
</div>
<div class="form-group">
<label for="name">Last name</label>
<input type="text" class="form-control" name="last_name" placeholder="Enter your lastname name" [(ngModel)]="credentials.last_name">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" name="email" placeholder="Enter email" [(ngModel)]="credentials.email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" placeholder="Password" [(ngModel)]="credentials.password">
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block">Register!</button>
</form>
</div>
</div>
</div>
import { Component } from '@angular/core'
import { AuthenticationService, TokenPayload } from '../authentication.service'
import { Router } from '@angular/router'
@Component({
templateUrl: './register.component.html'
})
export class RegisterComponent {
credentials: TokenPayload = {
_id: '',
first_name: '',
last_name: '',
email: '',
password: ''
}
constructor(private auth: AuthenticationService, private router: Router) {}
register() {
this.auth.register(this.credentials).subscribe(
() => {
this.router.navigateByUrl('/profile')
},
err => {
console.error(err)
}
)
}
}
<div class="container">
<div class="row">
<div class="col-md-6 mt-5 mx-auto">
<form (submit)="login()">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" name="email" placeholder="Enter email" [(ngModel)]="credentials.email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" name="password" placeholder="Password" [(ngModel)]="credentials.password">
</div>
<button type="submit" class="btn btn-lg btn-primary btn-block">Sign in</button>
</form>
</div>
</div>
</div>
import { Component } from '@angular/core'
import { AuthenticationService, TokenPayload } from '../authentication.service'
import { Router } from '@angular/router'
@Component({
templateUrl: './login.component.html'
})
export class LoginComponent {
credentials: TokenPayload = {
_id: '',
first_name: '',
last_name: '',
email: '',
password: ''
}
constructor(private auth: AuthenticationService, private router: Router) {}
login() {
this.auth.login(this.credentials).subscribe(
() => {
this.router.navigateByUrl('/profile')
},
err => {
console.error(err)
}
)
}
}
authentication.service.ts:
import { Injectable } from '@angular/core'
import { HttpClient } from '@angular/common/http'
import { Observable, of } from 'rxjs'
import { map } from 'rxjs/operators'
import { Router } from '@angular/router'
export interface UserDetails {
_id: string
first_name: string
last_name: string
email: string
password: string
exp: number
iat: number
}
interface TokenResponse {
token: string
}
export interface TokenPayload {
_id: string
first_name: string
last_name: string
email: string
password: string
}
@Injectable()
export class AuthenticationService {
private token: string
constructor(private http: HttpClient, private router: Router) {}
private saveToken(token: string): void {
localStorage.setItem('usertoken', token)
this.token = token
}
private getToken(): string {
if (!this.token) {
this.token = localStorage.getItem('usertoken')
}
return this.token
}
public getUserDetails(): UserDetails {
const token = this.getToken()
let payload
if (token) {
payload = token.split('.')[1]
payload = window.atob(payload)
return JSON.parse(payload)
} else {
return null
}
}
public isLoggedIn(): boolean {
const user = this.getUserDetails()
if (user) {
return user.exp > Date.now() / 1000
} else {
return false
}
}
public register(user: TokenPayload): Observable<any> {
const base = this.http.post(`/users/register`, user)
const request = base.pipe(
map((data: TokenResponse) => {
if (data.token) {
this.saveToken(data.token)
}
return data
})
)
return request
}
public login(user: TokenPayload): Observable<any> {
const base = this.http.post(`/users/login`, user)
const request = base.pipe(
map((data: TokenResponse) => {
if (data.token) {
this.saveToken(data.token)
}
return data
})
)
return request
}
public profile(): Observable<any> {
return this.http.get(`/users/profile`, {
headers: { Authorization: ` ${this.getToken()}` }
})
}
public logout(): void {
this.token = ''
window.localStorage.removeItem('usertoken')
this.router.navigateByUrl('/')
}
}
在routes/users.js中包含以下代码
users.post('/register', async(req, res) => {
try {
const exists = await User.findOne({ email: req.body.email})
if(exists == null){
res.statusCode = 200;
res.setHeader('Content-type', 'application/json');
res.json({success: true, status: 'You are allowed to register'});
}else{
res.statusCode=200;
res.setHeader('Content-type', 'application/json');
res.json({status: 'User already exists'});
}
}catch(error) {
res.status(500).send({message: "Error checking"});
}
})
就像我所做的,如果用户的电子邮件存在于数据库的用户模式中,那么它将不允许您注册。您也可以使用任何其他字段,如firstname或lastname。希望这能有所帮助。
您需要做一些更改,比如,让用户注册,而不是在此代码中“允许您注册”。
本文向大家介绍Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册,包括了Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册的使用技巧和注意事项,需要的朋友参考一下 动态验证:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.对应控制器方法的html页面: ajax:(不需要建Model模型) 1.建一个控制器,做表单操作(包含验证) 2.
问题内容: 我是node.js的新手,并希望为用户创建一个注册和登录页面。还需要对该用户进行适当的授权。我想将用户信息存储在mongodb数据库中。我该如何实现?有人可以提供我吗?这样做的代码,以便我可以开始使用node.js和mongodb。请帮助 问题答案: 您可以在Alex Young 的Nodepad应用程序中找到要执行的操作的完整示例。您应该查看的2个重要文件是这些2: https :
大家好,我对FireBase创建用户和注册用户有问题。下面是注册和登录的代码。我得到空指针异常,无法理解原因。。初始化完成了,但经过了这么多天的努力,还是弄不明白。 注册: 正在发布注册活动的日志错误: java.lang.com.google.android.gms.internal.zzdvv.zzb(未知来源)在com.google.android.gms.internal.zzdwc.zz
我有麻烦处理错误在我的注册表格特别是与密码1 以下是我的看法。py: 最后是模板文件: 一切正常,我可以在用户注册时对他们进行身份验证,登录并重定向他们,但如果注册表单中存在错误,那么我无法让用户了解哪个字段负责并在提交之前进行更正。 你知道如何确保显示密码吗
我正在使用Laravel 5.2 Auth系统生成以下命令: 尽管这一切都很好,但我的目标是使用外部API来执行登录、注册和更改密码,同时仍然能够使用Auth类的核心功能。 以登录为例,我想使用类似于 顺便说一下,我想将$login中的字段传递给Auth类,就像我们可以实际执行Auth::user()一样- 我在互联网上看了看,发现了AuthController内部可以做的事情,以及与服务提供商相
如果你已有幕布,直接登录即可。如果还没有账号,可以使用手机号码注册幕布账号,也可以通过QQ、微信直接注册并登录。 注:微信登录方式需要手机上安装有微信。 账号设置与绑定 登录幕布后,点左上角的头像或者轻按屏幕从左往右滑动,选择「应用设置 - 账号设置」。在这里可以修改头像和昵称,设置密码,绑定手机号码、微信、QQ账号。 注: 绑定手机后才可以设置账号密码,手机号即为账号。 解除绑定需要在电脑上登录