Web容器如何了解用户的角色

时间:2013-05-14 16:19:47

标签: security web-applications webserver roles declarative-authorization

我对网络应用程序开发及其安全性非常陌生,并试图了解周围的事物。

我到处寻找在我的webapp中实现安全性,他们要求使用declarative安全性。例如,在tomcat中,我可以在tomcat-user.xml文件中声明角色,如下所示。

<tomcat-users>
<user name="tomcat" password="s3cret" roles="manager-gui" />
</tomcat-users>

这部分我可以理解。

现在假设我在我的网络应用程序中添加了一些这些角色。现在,我的网络应用程序的用户向我的网络应用程序中的某些资源发出请求。我想知道容器或我如何知道用户提出请求的角色

谢谢。

1 个答案:

答案 0 :(得分:1)

使用Tomcat和JSP:

DataSourceRealm可以指向包含用户和用户角色表的数据库,但使用UserDatabaseRealm(指向tomcat-users.xml)也可以正常工作。

如果要保护特定文件夹中的所有jsp页面,请将其添加到web.xml

<security-constraint>
<web-resource-collection>
  <web-resource-name>Folder Description</web-resource-name>
  <url-pattern>/foldername/*</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>ROLE_ADMIN</role-name>
</auth-constraint>
</security-constraint>

如果您想知道用户在进入页面时是否具有特定角色,您可以使用

boolean hasAdminRole = request.isUserInRole("ROLE_ADMIN");