仅使用Javascript的基于角色的登录
只是一个简单的问题。 您认为可以使用Localstorage i Javascript创建基于角色的登录系统吗?没有使用任何库或框架(不允许)?我的方法是创建一个具有两个不同授权级别的“用户”类,该类将重定向到两个不同的html站点:) 您认为可以使用Localstorage i Javascript创建基于角色的登录系统吗 可以创建它,但它不会是远程安全的。任何用户都可以获得他们想要的任何访问权限,因为没有保存在浏览器中的信息对有动机的用户隐藏 如果您想完全用JavaScript实现这一点,那没关系,只需确保一些JavaScript在服务器上运行,将身份验证和角色信息存储在服务器端(您可以将当前用户的角色信息回显到客户端以用于UI),并将所有操作保留在服务器端仅使用Javascript的基于角色的登录,javascript,html,Javascript,Html,只是一个简单的问题。 您认为可以使用Localstorage i Javascript创建基于角色的登录系统吗?没有使用任何库或框架(不允许)?我的方法是创建一个具有两个不同授权级别的“用户”类,该类将重定向到两个不同的html站点:) 您认为可以使用Localstorage i Javascript创建基于角色的登录系统吗 可以创建它,但它不会是远程安全的。任何用户都可以获得他们想要的任何访问权限,因为没有保存在浏览器中的信息对有动机的用户隐藏 如果您想完全用JavaScript实现这一点,那
关于问题中代码的几个注释:
- 旁注:JavaScript中压倒性的惯例是,构造函数函数,如
以大写字母开头(如userLogin
,Date
,等等),因此Map
userLogin
- 在
的一个分支中获得if
很奇怪,但在另一个分支中获得userLogins
。建议只使用一个登录列表,而不是两个登录列表,这取决于它们是否已经存在employeeList
接受要获取的项的字符串键,因此此行:getItem
将if(localStorage.getItem(userLogin) == null){
隐式转换为字符串,并使用该键查找值。您的userLogin
是一个使用userLogin
语法创建的构造函数,默认情况下,它将转换为包含类代码的字符串,该字符串可能不是您想要使用的键 从您以后的代码中,我怀疑您想做类似的事情(这也包含了上面的其他反馈):class
但是,这一点也不安全。不过,您已经说过,这是学校项目的第一步,所以…请不要这样做。任何用户都可以轻松查看所有用户名和密码,因为它们存储在客户端。任何用户也可以随意更改其authLevel。这需要在服务器上完成。我知道,这只是一个学校项目:)我们还没有使用数据库:)
if(localStorage.getItem(userLogin) == null){
let userLogins = JSON.parse(localStorage.getItem("userLogin"));
if (!userLogins) {
userLogins = [
new UserLogin("Benjamin", 4321,"1" ),
new UserLogin("Mads",12345,"1"),
new UserLogin("Simon",1234,"1"),
new UserLogin("Jessica", 54321,"1"),
// Logins for Projectmanagers
new UserLogin("Oliver",1234,"2"),
new UserLogin("Sara",4321,"2"),
];
localStorage.setItem("userLogin", JSON.stringify(userLogins));
}
// ...use `userLogins`