web容器如何知道用户的角色



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

无论我在哪里寻找在我的web应用中实现安全性,他们都要求使用declarative安全性。例如,在tomcat中,我可以像下面这样在tomcat-user.xml文件中声明角色。

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

这部分我能理解。

现在假设我已经在我的web应用程序中添加了一些这些角色。现在,我的web应用程序的用户在我的web应用程序中请求一些资源。我想知道容器或I如何知道用户以哪个角色发出请求?

谢谢。

使用Tomcat和JSP:

datasourerealm可以指向包含User和User Role表的数据库,但是使用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");

最新更新