java中身份验证,如何处理数据库中用户的身份验证/授权?

有几种选择 . 选择哪一项完全取决于您 . 只是客观地权衡具体的优缺点,以符合自己的情况 .

1.使用Java EE提供的容器管理身份验证

只需在 web.xml 中声明 ,它引用在servletcontainer中配置的安全域 . 您可以为您的webapp指定应检查登录和/或角色的URL模式,例如: /secured/* , /app/* , /private/* 等

在Java EE 8之前,您遗憾的是仍然需要以特定于servlet容器的方式配置安全性 . 它's usually described in servletconainer-specific documentation. In case of Tomcat 8, that'是Realm HOW-TO . 例如,"JDBCRealm"部分描述了基于用户/角色表的基于数据库的域 .

从Java EE 8开始,最终会有一个基于JSR-375的标准API .

优点:

相对快速且易于设置和使用 .

自Java EE 8以来,终于有了一个强大而灵活的标准API .

缺点:

在Java EE 8之前,域配置是特定于容器的 . 在Java EE 8中,新的JSR-375 Security Spec应该在JASPIC的帮助下解决这个问题 .

在Java EE 8之前,没有细粒度的控件 .

在Java EE 8之前,它非常简洁;没有"remember me",错误处理不好,没有基于权限的限制 .

另见:

2. Homegrow一个servlet过滤器

这样可以实现更精细的控制,但是您需要自己编写所有代码,并且您应该真正了解/了解应该如何实现这样的过滤器以避免潜在的安全漏洞 . 在JSF方面,您可以通过 sessionMap.put("user", user) 将登录用户作为会话属性,并在 session.getAttribute("user") 不是 null 时检入过滤器 .

优点:

细粒度控制 .

完全独立于容器 .

缺点:

重新发明轮子;新功能需要大量代码 .

作为初学者,您永远不确定您的代码是否100%健壮 .

另见:

3.改编第三方框架

例如,Apache Shiro,Spring Security等 . 这通常提供比标准容器管理身份验证更精细的配置选项,并且您不需要自己编写任何代码,期望登录页面和一些(XML)配置当然 .

优点:

细粒度控制 .

完全独立于容器 .

没有重新发明轮子;至少自己的代码 .

由很多用户彻底开发和测试,因此很可能100%强大 .

缺点:

一些学习曲线 .

另见:

JSF2 - Shiro tutorial - 关于将Shiro集成到JSF2 webapp中的广泛教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值