angular - 如何使用角度(6)和服务器端保护页面
问题描述
有一个非常好的方法来保护带有角度的私人页面?(我知道有但我无法得到它)..我搜索了很多这个问题,我发现的所有信息看起来都一样,并没有真正给我一个解决方案
Angular 如何在任何服务器端保护页面(如管理面板)?我会解释我的意思..
我知道我们可以创建一个服务器端代码,该代码进入他自己的存储(数据库等),并根据他的凭据检查 Angular 发送的凭据。
但是 - 无论服务器端的答案是什么(比如说 PHP 或 Firebase 等),用户都可以更改 Angular 代码,因为它最终会生成到 JS 中!
可以说我的角度代码是这样的:
somecode..
somecode..
somecode..
if (serverside.respone == true) {
goto AdminPanel page;
} else {
alert('not authorized!');
}
somecode..
somecode..
somecode..
当我在 chrome 中打开我的 devtools 时,在我运行我的应用程序(使用 ng serve)之后,我可以轻松查看“main.js”源文件,并将此代码轻松更改为:
somecode..
somecode..
somecode..
if (1 == 1) {
goto AdminPanel page;
} else {
alert('not authorized!');
}
somecode..
somecode..
somecode..
然后呢?当然这不安全..(我也试过了,我是对的)请帮助我理解我错过了什么!
谢谢!
解决方案
Angular 或任何其他客户端框架应该只包含 UI Logic。公开 UI 逻辑不是安全线程。
服务器端 webapi 应该具有适当的身份验证和授权。
JWT(JSON Web Token)用于安全访问服务器端 API。
如您所说,用户可以修改代码if (1 == 1),但用户可以看到 UI .. 而不是数据。您应该在服务器端验证凭据并将数据提供给客户端
推荐阅读
- c# - c# XmlSerialization 折叠类以赋予特定值
- mysql - 从一列中选择重复值并在一行中获取值
- reactjs - 如果我们在componentDidMount内部调用回调函数,如何用componentDidMount替换useEffect?
- assembly - MIPS:关于加载/存储词库 + 偏移量的说明
- python - 判断二叉树是否平衡
- python - 如何从 metrics-server 获取 Pod CPU 和内存使用情况?
- django - Django 和登录“记住我”:如何查看其他代码的状态?
- java - 如何在 Java 中将 sun.nio.fs.ZipPath 转换为 sun.nio.fs.UnixPath?
- java - 在 Hibernate Search 运行时选择分析器
- winforms - 当我从列表视图中拖动项目时,如何在包含列表视图的表单中触发拖动或拖放事件?