- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
规范:
小服务程序:3.0
Java: 7
Tomcat :7.0.54
简介:
可以使用 HttpServletRequest.isUserInRole() 方法以编程方式检查用户是否具有特定角色
例如:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
String username = null;
String password = null;
//get username and password manually from Authorization header
//...
request.login(username, password);
if (request.isUserInRole("boss")) {
//do something
} else {
//do something else
}
request.logout();
}
这工作正常,但此解决方案需要从授权 header 中手动检索用户名和密码,然后使用这些凭据登录。
问题:
是否可以只做类似的事情?没有从 header 中检索数据并手动登录()?
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
if (request.isUserInRole("boss")) {
//do something
} else {
//do something else
}
}
试图回答自己:
根据我的理解,这段代码需要在 web.xml 中进行适当的配置。此示例使用 web.xml 文件中的此配置,例如:
<web-app ...>
...
<security-constraint>
<web-resource-collection>
<url-pattern>/HelloWorld</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>boss</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>DefaultRealm</realm-name>
</login-config>
</web-app>
但这意味着不需要以编程方式检查角色,因为我们只需要在 web.xml 中配置来限制访问。
总结:
谢谢。
编辑 1:
由于第一个答案建议将 login-config 元素添加到我的 web.xml,我必须说我已经有了它。我将它添加到代码片段中,因为我在发布问题时没有包含它。示例适用于此配置。但是,当我删除 auth-constraint 或整个 security-constraint 时,login-config 的存在是不够的。我添加了有关容器的信息:Tomcat 7.0.54。
最佳答案
问题1:
是否可以在不在 web.xml 中指定限制(auth-constraint)的情况下以编程方式检查角色?
回答:
是的,这是可能的。无需在 web.xml 中指定限制。无需将 scurity-contraint 放在 web.xml 中。
此外,无需从 header Authorization 中手动检索凭据,然后手动login()。
解决方案:
这是一个工作示例:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
request.authenticate(response); //solution
if (request.isUserInRole("boss")) {
//do something
} else {
//do something else
}
}
网络.xml:
<web-app ...>
...
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>DefaultRealm</realm-name>
</login-config>
</web-app>
那行得通。
如您所见,HttpServletRequest.authenticate() 方法已被使用,并且可以达到目的。文档说:
Triggers the same authentication process as would be triggered if the request is for a resource that is protected by a security constraint.
这就是我们所需要的。我希望它对以后的人有所帮助。
关于java - Servlet - isUserInRole(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302667/
我已经在 glassfish 3.0 中配置了 JAAS 并使用 JDBCRealm 来验证用户身份。它工作正常并且 URL 受到限制。但方法#{facesContext.externalContex
我按如下方式将用户添加到角色(请注意,我在我的机器上运行下面显示的代码): Roles.AddUserToRole(oMU.UserName, "Role1"); 使用以下代码我检查用户是否在
规范: 小服务程序:3.0 Java: 7 Tomcat :7.0.54 简介: 可以使用 HttpServletRequest.isUserInRole() 方法以编程方式检查用户是否具有特定角色
防止用户角色执行操作。 示例 1:角色“管理员” 是唯一允许扮演的角色 破坏行动。 示例 2:任何不同于“guest”的角色都可以执行 CREATE 操作。 在一个真实的案例中,我有这个: publi
我正在开发我的第一个 Jsf、Jaas、JPA、JBoss 应用程序,现在我遇到了这个麻烦。我在 JBoss 中创建了两个安全域:
HttpServletRequest isUserInRole() 方法将根据角色是否存在返回一个 boolean 值。现在,如果它这样做,它应该在某处拥有登录用户的完整角色列表。我如何获得完整的角色
当我实现 RoleProvider 类并调用 Roles.IsUserInRole(string username, string roleName) 时,代码执行首先转到方法“GetRolesFor
我在很多帖子中都发现了这个问题,但我找不到解决方案。我有一个基于领域的身份验证,并且有两个映射的角色 USERS 和 ADMINS。登录正常,但如果我尝试使用 FacesContext context
我有一个带有自定义成员资格的 c# mvc razor web 应用程序,一切都很好。我可以使用以下命令获取登录用户名:user.identity.name。我有一个用户名及其角色的数据库。现在的问题
我正在使用 Glassfish 3.1.1 作为我的应用服务器开发 Java EE 6 应用程序。我正在使用声明性和程序化安全性。我在部署描述符中定义了几个角色,并定义了所有安全约束。 我使用的是 J
我正在使用: request.IsUserInRole("ADMIN") 在我的 Controller 之一中确定对请求的响应。我尝试在测试中模拟请求,例如: @Mock private HttpSe
我正在尝试实现自定义角色提供程序。我们可以实现抽象类 RoleProvider,它使我们能够访问覆盖 RoleProvider.IsUserInRole(Username, Rolename) 但我们
我最近在 JSP 中开发了一个 tomcat 网络应用程序,它使用绑定(bind)到公司 Active Directory 的声明性安全性 (server.xml/web.xml)。我被要求为刚刚起步
在 MVC4 中,我使用 Roles.IsUserInRole 来检查给定用户是否处于某个角色。但是,使用 MVC5 我不能再这样做了...... 起初,它要求我在 web.config 中启用 Ro
在 .NET 2.0 中的自定义角色提供程序(继承自 RoleProvider)中,IsUserInRole 方法已被硬编码为始终返回 true: public override bool IsUse
我正在通过 JBoss AS7 服务器使用 Struts 2 和 Rest Services 开发一个小型 Java EE 应用程序。 我对 REST 和 Web 内容使用 FORM auth,我对
我的 Spring 应用程序为我的登录页面使用了一个包含用户和角色的数据库以及两者的交叉表。 为了将用户重定向到不同的角色页面,我使用了 Controller @Controller public c
在 tomcat-users.xml 中定义了用户和角色: 应用程序安全性定义为: Dynamic pages
问题来了 JAAS 领域连接到数据库正常,用户名和密码匹配, session 通过身份验证。然而,这些角色似乎都没有进入校长。 Tomcat 的 isInUserRole 为每个角色返回 false,
我开始认真地认为,就开发工作而言,我工作的地方受到了诅咒,我不断遇到非常奇怪的问题。 我正在使用 Roles.IsUserInRole(@"Domain\Domain Admins") 检查用户是否是
我是一名优秀的程序员,十分优秀!