Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java和Spring MVC设计和架构,用于社交艺术共享网站_Java_Spring_Spring Mvc_Spring Security_Resttemplate - Fatal编程技术网

Java和Spring MVC设计和架构,用于社交艺术共享网站

Java和Spring MVC设计和架构,用于社交艺术共享网站,java,spring,spring-mvc,spring-security,resttemplate,Java,Spring,Spring Mvc,Spring Security,Resttemplate,我想练习使用SpringMVC在Java中构建应用程序。 我有一些关于设计和实现我的想法的问题 这是我正在努力开发的内容,下面你会发现我的设计问题 用户导航到一个网站,该网站承载着艺术品(html5画布),并能够将其作为客人使用。客人或登录用户可以搜索其他人的作品。 该网站允许最终用户能够创建艺术品并与世界共享 通过发布它并生成资源的永久URL。任何人都可以访问该作品,除非该作品的作者可以决定是否需要用户/密码保护。只有作品的作者才可以编辑他的作品。用户可以在属于自己或其他用户的图像下发表评论。

我想练习使用SpringMVC在Java中构建应用程序。 我有一些关于设计和实现我的想法的问题

这是我正在努力开发的内容,下面你会发现我的设计问题

用户导航到一个网站,该网站承载着艺术品(html5画布),并能够将其作为客人使用。客人或登录用户可以搜索其他人的作品。 该网站允许最终用户能够创建艺术品并与世界共享 通过发布它并生成资源的永久URL。任何人都可以访问该作品,除非该作品的作者可以决定是否需要用户/密码保护。只有作品的作者才可以编辑他的作品。用户可以在属于自己或其他用户的图像下发表评论。客人需要成为会员,才能对他人的作品发表评论或创建自己的图像和永久URL

问题:

我在网络开发方面的经验非常有限。我只是一个数据库管理员-( 因此,如果这些问题是noob式的,我对此表示歉意。我了解一些spring和Java

1) 。我应该有两种模板页面吗?每个用户的艺术作品页面一个供作者使用,另一个供其他用户/客人使用?不确定在其他流行应用程序中如何处理此问题

2) 。我应该如何通过spring security来管理这一点。每个用户只能编辑其作品页面,而不能编辑其他人的作品页面。在文档中,我只看到了ROLE_USER/ROLE_ADMIN的示例。这对我来说似乎太基本了。不确定从何处开始,是否适合涉及协作的用例。任何介绍这种设计的教程都会非常有用

提前感谢。

不同的模板? 您可以使用相同的模板为作者和来宾显示视图,并根据当前用户对该页面的艺术作品的权限修改页面上的某些元素。如果不同的视图完全不同,您只需要创建两个单独的页面,而且使页面动态化的麻烦比它的价值还要多

Spring授权安全性 Spring Security处理身份验证(谁是当前用户?)和授权(是否允许当前用户这样做?)。在这里,我们谈论的是

有不同的方法可以使用Spring安全性进行授权。一种方法是使用一系列投票策略来决定是否允许用户执行操作()。另一种是全面的,您维护一组表,这些表描述了一个人对要锁定的每个资源的访问权限。从ACL中读取数据很简单,但是维护这些表是您的责任。每次更改权限或创建安全对象时,都必须插入或更新ACL。向下滚动查看示例

建议:保持简单 我最近评估了使用Spring Security的不同授权方法,并决定自己只使用用户的主体,然后点击数据库查看用户是否拥有资源的权限。Spring安全性非常复杂,如果您在站点上线后在ACL管理代码中引入了一个bug,祝您好运。该错误只会存在于那些修改了ACL的特定记录中

我会保持简单。使用以下方法创建SecurityManager:

public boolean canViewArtwork(String userPrincipal, Long artworkId);
public boolean canEditArtwork(String userPrincipal, Long artworkId);
然后,在需要进行安全检查时调用这些方法。这是一种代码,您可以离开它,稍后再回来了解它

使用权限,而不是角色 请注意,SecurityManager正在检查权限,而不是角色。项目总是从两个角色开始,“用户”和“管理员”。沿着这条路走下去,这些线总是开始变得模糊,最后你会发现到处都是条件句。您最初仍然可以在系统中扮演这两个角色,但SecurityManager将是处理这两个角色的唯一场所。如果您最终添加了第三个角色-没问题,只有您的SecurityManager需要更改