javaee中使用过滤器的授权

javaee中使用过滤器的授权,java,authentication,Java,Authentication,我有一个mongodb库,里面有用户和密码。我有一个jsp文件和一个授权表单。 过滤器应为“检查-授权用户”或“非授权用户”。若用户未经授权,Servlet应授权用户 请举例说明如何做 如何验证授权用户或 不是吗 用户未登录。假设 用户在数据库中。它是怎样的 授权 对不起,英语不好。这里有一个场景:- 用户进入一个安全页面 过滤器拦截用户请求 筛选器从会话中检索用户对象 如果User对象存在,则允许用户访问安全页面 如果User对象不存在,请将用户重定向到登录页面 当用户从登录页面提交凭据时

我有一个mongodb库,里面有用户和密码。我有一个jsp文件和一个授权表单。 过滤器应为“检查-授权用户”或“非授权用户”。若用户未经授权,Servlet应授权用户

请举例说明如何做

  • 如何验证授权用户或 不是吗
  • 用户未登录。假设 用户在数据库中。它是怎样的
    授权
对不起,英语不好。

这里有一个场景:-

  • 用户进入一个安全页面
  • 过滤器拦截用户请求
  • 筛选器从会话中检索
    用户
    对象
  • 如果
    User
    对象存在,则允许用户访问安全页面
  • 如果
    User
    对象不存在,请将用户重定向到登录页面
  • 当用户从登录页面提交凭据时:-

  • 系统根据数据库使用提供的凭据对用户进行身份验证
  • 如果身份验证成功,系统将在会话中存储
    用户
    对象,并显示欢迎页面
  • 如果身份验证不成功,系统将用户带回登录页面

  • JavaEE实现通常允许您设置
    登录模块
    。这些代码包含用于对许多不同系统进行身份验证的实际代码。其中包括一个本地XML文件、一个数据库、LDAP、Kerberos和许多其他文件

    你不必自己写,它们已经提供给你了

    您的代码只触发身份验证(或者声明要保护的资源,JavaEE为您触发身份验证),而对实际的身份验证机制一无所知。实际身份验证通常在代码外部配置。一些JavaEE实现允许您在EAR中指定这一点(例如,通过JBossAS上的-service.xml文件)

    一个潜在的缺点是这些模块特定于您的JavaEE实现(例如JBossAS、Glassfish等)。如果您在代码之外进行了配置,则必须有人对要在其上运行代码的每个不同的JavaEE应用程序服务器重新进行配置

    除此之外,Java自动为您触发身份验证(声明式安全性)的方式相当粗糙。更常见的情况是,它的触发是通过编程完成的,因此您可以更好地控制登录框的工作方式和具体发生时间

    请参阅以下内容,了解如何操作:

    或者,limc确实也有这样的解释。通过这种方法,您可以完全忽略JavaEE为此提供的API,只构建自己的代码,该代码通常查询数据库并将某些对象存储到HTTP会话中。这里的缺点是,您的安全上下文不会自动传播,您必须手动传递此对象或提供需要检查身份验证并访问HTTP会话的代码

    特别是对于业务bean来说,访问HTTP会话是一种糟糕的做法


    最后,Seam 3承诺为安全问题构建一个可移植的CDI扩展,如果/当它可用时,这可能会有很大帮助。

    我想我理解它。我对javaee的知识有一个问题。如何做到这一点?如何对用户进行身份验证?如何检查它是否被授权?非常感谢你。