Security isUserInRole(“ADMIN”)也为不在角色ADMIN中但在角色user中的用户返回true
我目前正在Glasshfish v3中试用JDBCRealm: 我有两个角色:用户和管理员 我有一个LoginServlet,它根据request.isUserInRole(“admin”)方法重定向到url(比如/admin或/user) 问题是,当管理员登录时,它会返回true,因此会重定向到/ADMIN,但他也可以访问/user。当用户登录请求时,isUserInRole(“ADMIN”)也返回true。isUserInRole(“不存在的角色”)为两者返回false 例如: request.isUserInRole(“管理员”)+“”+ request.isUserInRole(“用户”)+“”+ request.isUserInRole(“不存在的角色”) 对于loggedin用户:返回true false 对于loggedin,ADMIN返回true 真假 这是my web.xml的一部分:Security isUserInRole(“ADMIN”)也为不在角色ADMIN中但在角色user中的用户返回true,security,servlets,glassfish,security-roles,jsecurity,Security,Servlets,Glassfish,Security Roles,Jsecurity,我目前正在Glasshfish v3中试用JDBCRealm: 我有两个角色:用户和管理员 我有一个LoginServlet,它根据request.isUserInRole(“admin”)方法重定向到url(比如/admin或/user) 问题是,当管理员登录时,它会返回true,因此会重定向到/ADMIN,但他也可以访问/user。当用户登录请求时,isUserInRole(“ADMIN”)也返回true。isUserInRole(“不存在的角色”)为两者返回false 例如: reques
<security-constraint>
<display-name>Constraint1</display-name>
<web-resource-collection>
<web-resource-name>adminProtected</web-resource-name>
<description>Administrator restricted area</description>
<url-pattern>/admin/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>Constraint2</display-name>
<web-resource-collection>
<web-resource-name>userProtected</web-resource-name>
<description>User restricted area</description>
<url-pattern>/user/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>Constraint3</display-name>
<web-resource-collection>
<web-resource-name>LoginServlet</web-resource-name>
<description>All restricted area</description>
<url-pattern>/LoginServlet</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>USER</role-name>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>securityJDBC</realm-name>
<form-login-config>
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/login.jsf</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description></description>
<role-name>USER</role-name>
</security-role>
<security-role>
<description></description>
<role-name>ADMIN</role-name>
</security-role>
<servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>controllers.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
约束1
管理员保护
管理员禁区
/管理员/*
得到
邮递
管理
约束2
用户保护
用户限制区
/使用者/*
得到
邮递
使用者
约束3
罗金瑟夫莱特酒店
所有禁区
/罗金瑟夫莱特酒店
得到
邮递
使用者
管理
形式
安全jdbc
/login.jsf
/login.jsf
使用者
管理
罗金瑟夫莱特酒店
罗金瑟夫莱特酒店
controllers.LoginServlet
罗金瑟夫莱特酒店
/罗金瑟夫莱特酒店
和我的sun-web.xml:
<security-role-mapping>
<role-name>USER</role-name>
<group-name>USER</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>ADMIN</role-name>
<group-name>ADMIN</group-name>
</security-role-mapping>
使用者
使用者
管理
管理
谢谢大家! 乍一看,您的安全映射看起来不错。您的用户映射如何?看起来用户和管理员角色上都映射了相同的用户名。通过确保领域设置“Assign Groups”为空来修复此问题。Glassfish将从组表中加载它们。我有两个表:SecurityGroup:id;groupId;用户标识;1.管理1 2;用户;2安全用户;身份证件密码;用户标识;雇主1;21232f297a57a5a743894a0e4a801fc3;A.1 2;ee11cbb19052e40b07aac0ca060c23ee;U2Glassfish领域属性:Jaas上下文:jdbcRealm用户表:securityuser用户名列:userid密码列:密码组表:securitygroup组名列:groupIdI发现了一些问题:如果我将领域设置“Assign Groups”设置为User,ADMIN,我就会遇到原始问题。如果你将其设置为空,我可以登录,但在所有安全约束下拒绝访问。。。