选择 Maven groupId 的一种最佳实践是根据公司的域名选择 groupId。某些域名包含特殊字符,尤其是连字符减号。此外,对于新的非 ASCII 域,域名还可以包含非 ASCII 字符。
现在我的问题是:
我可以在 groupId 中使用减号吗?什么是合理的替代方案?
groupId中非ASCII域名的特殊字符如何处理?
一个具体问题:我必须找到三个独立公司的groupId: 公司A的域名是“heccare.de” 公司B的域名是“heccare-international.de” 公司C的域名是“heccare-int.de”
什么是合理的groupId?
我使用Spring安全性对用户进行身份验证。如果用户请求安全页面,则他必须通过登录页面进行身份验证。如果用户始终通过身份验证,则将立即将其重定向到请求的页面。此外,某些页面需要特殊的访问权限,因此我暂时设置了一个访问被拒绝的页面。到目前为止,一切都很好。
方案: 该方案定义为,用户将获得登录表单而不是静态访问拒绝页面,以便其他用户可以进行身份验证,并且如果身份验证成功,则将打开需要更高权限的请求页面。
实际的弹簧配置为:
<security:http auto-config="true" use-expressions="true" disable-url-rewriting="true">
<security:intercept-url pattern="/index.jsp" access="permitAll" />
<security:intercept-url pattern="/loginView" access="permitAll" />
<security:intercept-url pattern="/accessDenied" access="permitAll"/>
<security:intercept-url pattern="/user" access="hasRole('ROLE_USER')" />
<security:intercept-url pattern="/admin" access="hasRole('ROLE_ADMIN')" />
<security:intercept-url pattern="/**" access="denyAll"/>
<security:form-login login-page="/loginView"
authentication-failure-url="/loginView"
default-target-url="/dirView" />
<security:logout />
<security:access-denied-handler ref="accessDeniedHandler" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
accessDeniedHandler-Bean:
public class AccessDeniedServletRequestHandler implements AccessDeniedHandler {
/** {@inheritDoc} */
@Override
public void handle(HttpServletRequest req, HttpServletResponse resp,
AccessDeniedException accessDeniedException) throws IOException,
ServletException {
RequestDispatcher d = req.getRequestDispatcher("/loginView");
d.forward(req, resp);
}
}
Run Code Online (Sandbox Code Playgroud)
但是AccessDeniedHandler的实现仅转发到loginView。在对管理员进行身份验证之后,默认成功页面为openend,而不是原始请求页面。我也尝试通过调用HttpServletRequest#getAttribute(“ javax.servlet.forward.servlet_path”)保存原始请求,但是我不明白如何强制Spring Security使用该原始请求而不是默认目标url。
此外,我还阅读了有关org.springframework.security.web.savedrequest.SavedRequest的信息,如果未经身份验证的用户请求页面,它将在Spring身份验证中用于记住原始请求。但是我找不到一种有效的方法,如何针对拒绝访问的情况以相同的方式使用SavedRequest。
在此先感谢您的建议和解决方案。