java - 休息服务器应如何管理用户启用?
问题描述
我有一个使用 javaee 7 和一个 react/redux 应用程序的 rest java 后端。n 个不同的客户使用相同的应用程序。每个客户可以要求 m 个与其他客户的角色不同的角色。例如,一位客户可以付费查看列表中不应该对另一位客户可见的列。问题是.. 是否有一种模式或方法可以轻松地处理隐藏或显示列表中的列或隐藏/显示表单中的字段的可能性?(用户授权)
客户 X 付费查看客户列表中的电话号码
客户 Y 根本看不到电话号码。
为两者发布的应用程序是相同的。
服务器如何在不耦合的情况下将这些信息提供给前端应用程序?
谢谢。
后来又增加了一个问题:
是的,反应部分很清楚。我将添加一些信息以更清楚。重点是“如果我想从创建表单中隐藏电话号码字段?” 服务器应该如何将这些信息提供给前端?它应该发送一个空的数据对象吗?
解决方案
这是一个简化的示例,但它应该让您了解如何根据用户角色有条件地获取和呈现数据。
- 前端使用身份验证数据调用 API 端点(
userId
在token
此示例中) - 后端根据身份验证数据确定角色,返回与该角色相关的数据(例如
phone
,如果他们的角色允许,则包括) - 前端呈现响应数据(例如
"Hidden"
,如果phone
不存在则呈现)
以下是您的React
组件的外观:
class CustomerList extends Component {
constructor(props) {
super(props);
this.state = {
customers: []
};
}
componentDidMount() {
// fetch list data
fetch('https://myapi.com/api/getCustomers', {userId: 12345, token: someToken})
.then(res => res.json())
.then(response => {
this.setState({customers: response.customers});
});
}
render() {
const { customers } = this.state;
return (
<div className="customers">
{customers.length &&
<ul>
{customers.map(customer => (
<li>
<div className="name">
Name: {customer.name}
</div>
<div className="phone">
Phone: {customer.phone || "Hidden"}
</div>
</li>
))}
</ul>
}
{!customers.length &&
<div>Loading...</div>
}
</div>
);
}
}
角色只是一个建议。后端还有其他方法可以确定当前用户有权查看哪些数据。关键是你返回到前端的数据应该只包含用户有权查看的内容。您不应该返回所有数据,然后有条件地将其呈现在前端。
推荐阅读
- unit-testing - JUnit 避免重复断言
- json - 用jq替换基于键值对的JSON值
- python - 使用python从csv数据生成一个新的xml
- python - 在 Python Pandas 数据集中每行保持随机最小值
- ionic-framework - Ionic 4 选项卡:在推送新页面之前删除当前页面
- python - 在发送带有相关 pdf 附件的多封电子邮件时显示空白 pdf 附件
- github - Google Cloud Build GitHub App - 组织中所有项目的自动触发器
- reactjs - 无法使用 gh-pages 在 GitHub 上部署应用程序
- node.js - 从另一台服务器 NodeJS 提供静态文件
- html - 如何关联两个元素以实现可访问性?