gpt4 book ai didi

gwt - 在 GWT 应用程序中,如何保护我的地点和事件免受未经授权的用户的侵害?

转载 作者:行者123 更新时间:2023-12-02 22:33:32 26 4
gpt4 key购买 nike

我有一个 GWT 应用程序,它使用 Activities and Places 模式来导航应用程序中的不同位置。在应用程序中,有些地方只有授权用户才能查看。

授权机制如下:

1-用户输入用户名+密码

2- 使用提供的密码检查此类用户的服务器。

3- 在包含 SID、用户名和过期日期的数据存储中添加 token (我使用的是 GAE bwt)

4- 将 token 发送给客户端。

现在,在我允许用户 Go to Place 之前,我应该检查他/她是否获得授权,检查他/她的 token 是否有效,即之前通过授权操作保存在商店中。我最终得到了一些像这样的 ActivityMapper。

public class ApplicationActivityMapper implements ActivityMapper {

private ActionDispatcherServiceAsync service;

private SecurityTokenProvider provider;
private HashMap<Class<? extends Place>, ActivityPlaceMeta> placesActivitiesMap;

@Inject
public ApplicationActivityMapper(ActionDispatcherServiceAsync service, SecurityTokenProvider provider, HashMap<Class<? extends Place>, ActivityPlaceMeta> placesActivitiesMap) {

this.service = service;

this.provider = provider;

this.placesActivitiesMap = placesActivitiesMap;

this.placesActivitiesMap.put(PlaceNotFoundPlace.class, new ActivityPlaceMeta() {
@Override
public Activity getActivity(Place place) {
return new PlaceNotFoundActivity();
}
});
}

@Override
public Activity getActivity(Place place) {

if (place instanceof SecuredPlace) {
Token token = provider.getToken();
service.dispatch(new CheckAuthorizationAction(token), new GotResponse<CheckAuthorizationResponse>() {
@Override
public void gotResponse(CheckAuthorizationResponse result) {
if (result.isAuthorized()) {
//here comes tht problem .... !!!
//how to return the place ???
}
}
});
}

ActivityPlaceMeta returnedActivity = placesActivitiesMap.get(place.getClass());

if (returnedActivity == null) {
return placesActivitiesMap.get(PlaceNotFoundPlace.class).getActivity(new PlaceNotFoundPlace());
}
return returnedActivity.getActivity(place);
}
}

还有其他想法吗?提前致谢。

最佳答案

对于 GWT 应用程序,它不是关于保护您的 UI 的一部分,而是更多地保护您的服务器端,它提供特定位置所需的数据。

如果某些用户前往需要登录的地方,只需让远程服务无法提供任何数据即可。然后您的演示者应该处理失败并可能重定向到登录位置。

当然,如果用户未登录,您可能希望限制客户端中的导航,您可以这样做,例如在您的事件映射器中。

关于gwt - 在 GWT 应用程序中,如何保护我的地点和事件免受未经授权的用户的侵害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com