JavaWeb应用中的身份验证(混合型)——综合应用声明式和编程式

来源:互联网 发布:visual studio for mac 编辑:程序博客网 时间:2024/06/03 03:57

声明式相当方便,我们可以设置用户名、密码、访问机制和传输层协议。但对于声明式来说,针对web的每一个资源,声明式只提供了2个级别的访问,允许或者拒绝,无法根据客户端的用户名和角色自定义输出结果。

当仅仅声明式安全是不足以表达应用的安全模型时,编程式安全被用于意识到安全的应用。编程式安全包括以下HttpServletRequest接口的方法:

<span style="white-space:pre"></span>request.isUserInRole(Role) //判断用户是否属于特定角色request.getRemoteUser() //返回当前用户request.getUserPrincipal()//返回当前用户Principal信息,但只包含Name信息request.login()<span style="white-space:pre"></span>//允许应用执行用户名和密码收集(作为一种Form-Based Login的替代)request.logout()//提供用于应用重置来访者的请求身份

同时,servlet规范允许使用security-role-ref为已有的角色定义同义词,如做出以下配置

<security-role-ref><role-name>newRole</role-name><role-link>amind</role-link></security-role-ref>


在这种情况下,如果属于”newRole”安全角色的用户调用了servlet,则调用isUserInRole("admin") API的结果是true。



1 0
原创粉丝点击