Apache MyFaces 2.0身份验证和授权

问题描述:

我需要创建一个具有登录系统的webapp。 用户应该对数据库进行身份验证。 我想保存在会话中的userrole - 还是有其他(更好)的方式吗?Apache MyFaces 2.0身份验证和授权

此外还有用户访问的区域。 访客区, 用户区, 管理员区。

现在的问题是。 如何轻松实现jsf2.0的授权? 我不想在每个网站上测试,如果用户被允许访问网站或不。

在web.xml或faces-config.xml中是否有配置来测试这些情况?

有人可以给我看教程或示例代码吗?

感谢和问候 veote

+0

对于哪个服务器? – 2012-03-16 13:34:06

+0

Websphere Application Server 8.0 – veote 2012-03-16 13:44:57

+0

“我不想在每个站点上测试,如果用户被允许访问站点或不。”你可以详细说明'每个网站',你是否正在寻找多点网站的单点认证?或者你的意思是检查每个网页/链接? – 2012-03-16 13:59:52

您还可以查看选项(Framewroks)

  1. Spring Security
  2. Apache Shiro
  3. Java EE Security Tutorial
  4. 作为已经建议Application Server提供身份验证/授权。
  5. 实现一个过滤器(用于认证定制土生土长逻辑/授权)

博客覆盖ANA在JSF

  1. User session filter
  2. Access Control in JSF using a PhaseListener

希望这会有所帮助

+0

我不知道Apache Shiro,值得去尝试一下吗?特别是和Spring Security相比(如果你有两种经验的话) – 2012-03-16 15:13:59

+0

@PetrMensik我没有尝试过,但是在博客中看到过,有时在SO它肯定值得一试的人们使用它。 – 2012-03-16 17:00:45

+0

非常感谢,我认为shiro是我想要的。我会尝试这个 – veote 2012-03-19 07:18:10

你可以试试this方法,它使用的PhaseListener检查,如果用户有在RESTORE_VIEW阶段访问当前网站的权利。这是很容易实现它,它可以在不同的服务器之间移动(与领域相反)

+0

谢谢,这似乎很好。有没有可能在web.xml/faces-config中配置其他方法? – veote 2012-03-16 13:54:49

+0

呃,不是那么好。您可以指定受限制的页面以及如何记录用户,但通常只能在领域内正常工作(并且有时很难将其全部设置并将它们连接在一起)。顺便说一句,为什么你只想使用这些XML文件?似乎更清洁和易于使用经典的编程风格,而不是用XML来打扰自己 – 2012-03-16 14:01:16

+0

没错。我会尝试这个,谢谢:) – veote 2012-03-16 14:02:24

我不熟悉Websphere,但由于它是符合Java EE 6的应用程序服务器,因此可以为此创建JDBCRealm。请参阅Java EE 6 tutorial的本章。

+0

谢谢,但我对我来说这不是我想的最好的方式,因为也许我想用ldap来更改db。 – veote 2012-03-16 13:53:23

+1

@veote我使用weblogic,但在领域中更改身份验证提供程序并不难,您可以轻松切换技术。 – 2012-03-16 14:02:45

+0

如果你看看教程中的例子(和我的经验),我同意gbagga切换不应该那么复杂。 – 2012-03-16 14:04:55