मैंने कोणीय 2 का उपयोग करके एक लॉगिन पृष्ठ लागू किया है। लॉगिन के बाद, मुझे सर्वर से jsonwebtoken, userId, userRole, userName मिलता है। मैं स्थानीय जानकारी में यह जानकारी संग्रहीत कर रहा हूं ताकि उपयोगकर्ता इसे किसी भी समय एक्सेस कर सके और उपयोगकर्ता को पृष्ठ रीफ्रेश करते समय लॉगिन स्थिति बनाए रख सके।कोणीय 2 प्रमाणीकृत राज्य
AuthService.ts
import {Injectable} from "@angular/core";
@Injectable()
export class AuthService {
redirectUrl: string;
logout() {
localStorage.clear();
}
isLoggedIn() {
return localStorage.getItem('token') !== null;
}
isAdmin() {
return localStorage.getItem('role') === 'admin';
}
isUser() {
return localStorage.getItem('role') === 'user';
}
}
लॉगिन स्थिति जांचने के लिए, मैं सिर्फ अगर टोकन LocalStorage में मौजूद है की जाँच कर रहा हूँ। चूंकि स्थानीय स्टोरेज संपादन योग्य है इसलिए स्थानीय स्टोरेज में किसी भी टोकन को जोड़ना लॉगिन पृष्ठ को बाईपास करेगा। इसी तरह, यदि ग्राहक स्थानीय स्टोरेज में उपयोगकर्ता भूमिका संपादित करते हैं, तो क्लाइंट आसानी से व्यवस्थापक या उपयोगकर्ता पृष्ठों तक पहुंच सकता है।
मैं इन समस्याओं को कैसे हल करूं?
यह एक सामान्य समस्या की तरह है, मैं जानना चाहता हूं कि वेबसाइटें लॉगिन स्थिति कैसे बनाए रखती हैं?
पीएस NodeJS सर्वर साइड लॉगिन कोड jsonwebtoken
const jwt = require('jsonwebtoken');
const User = require('../models/User');
/**
* POST /login
* Sign in using username and password
*/
exports.postLogin = (req, res, next) => {
User.findOne({username: req.body.username})
.then(user=> {
if (!user) {
res.status(401);
throw new Error('Invalid username');
}
return user.comparePassword(req.body.password)
.then(isMatch=> {
if (isMatch != true) {
res.status(401);
throw new Error('Invalid password');
}
let token = jwt.sign({user: user}, process.env.JWT_SECRET, {
expiresIn: process.env.JWT_TIMEOUT
});
return res.status(200).json({
success: true,
token: token,
userId: user._id,
role:user.role,
name:user.name
});
});
})
.catch(err=>next(err));
};
शुक्रिया उत्पन्न करने के लिए