java - 创建基于角色的 Web 应用程序的最佳方法是什么?

标签 java web authentication roles

我需要为学校创建一个网络应用程序,我需要有不同的角色,例如:

  • 学生
  • 教授
  • 管理员

我需要在开始时登录,然后在输入凭据后应用程序需要重定向到主页。

这里的问题是:我应该如何处理角色?我应该为每个角色分配一个命名空间吗?即:students/index.jsp、professors/index.jsp、admin/index.jsp 或所有角色都有一个共同的 namespace ?像 home/index.jsp 这样的东西?然后使用装饰器/复合模式让菜单根据角色具有不同的选项?

对于这个问题,我知道我必须存储用户和角色,每个都在它自己的表中,这个问题与处理演示/导航/权限角色以及如何创建 webapp 结构有关,即有一个目录在名为 students 的 webapp 文件夹下,另一个文件夹 admin 和另一个 students 以及关于我上面提到的要点(装饰器或复合模式)

当然,我不会制作这么小的应用程序,但我想简化我面临的问题,以便创建一个基于 Web 的大角色应用程序,我相信这些是主要原则。

感谢您的宝贵时间和帮助。

最佳答案

您绝对不希望为不同的角色设置单独的页面(“ namespace ”),因为这几乎不可避免地会导致代码重复。

您应该为每个功能创建一个页面,并根据用户的角色限制访问。 (例如,某些菜单项对学生不可见,但对教授和管理员显示。)

您绝对不应该尝试重新发明轮子来管理基于角色的权限,因为已经有经过实践检验的框架可用于此目的:正如其他人已经指出的那样,在 Java 世界中,Spring 和 Spring Security是要走的路。

我认为 JSP 作为技术正在老化,因此您可能应该开始学习 Angular反而。

由于设置一个工作的 Spring/Angular 项目并非易事,我建议您使用 JHipster application generator使用向导指导您完成整个过程(您只需回答一些问题——当被问及类型选择 monolithic web application 时):然后它会根据现代建议创建一个具有基于角色的安全性的工作项目配置。

如果您想在现代 Web 应用程序中了解适当的基于角色的访问控制,我认为查看 JHipster 生成的应用程序中使用的解决方案是最好和最快的解决方案:

  • 它使用 Spring Security 功能来限制 Java 中的调用 后端:寻找org.springframework.security.access.annotation.Secured的用法生成项目中的注释
  • 展示了一些自定义前端技巧来显示/隐藏某些 UI 基于角色的部分,像这样: <h1 *jhiHasAnyAuthority="'ROLE_ADMIN'">Hello, admin user</h1> ,您可以轻松地将其应用到您自己的用例中。
  • 您可以在 2 分钟内完成一个工作项目:非常适合学习(选择最简单的 monolithic web application !)

关于java - 创建基于角色的 Web 应用程序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467948/

相关文章:

java - 使用深度优先搜索创建迷宫

web - 关于 google+ 评论的官方文档在哪里?

Java 自定义 Web 布局

javascript - 使用 AngularJS : auth cookie sent for/_session only 登录 CouchDB

java - Spring Security 自定义登录的工作原理

java - 导入java ImportError : No module named java

java - 我怎样才能更好地清理和组织我的 View (MVC)

java - 我可以为我的网站之一使用 C3PO/DBCP 连接池吗

html - 简单网站的完美 SEO?

java - Spring安全登录总是200