小编shy*_*ynx的帖子

带有特殊字符的 Maven GroupId

选择 Maven groupId 的一种最佳实践是根据公司的域名选择 groupId。某些域名包含特殊字符,尤其是连字符减号。此外,对于新的非 ASCII 域,域名还可以包含非 ASCII 字符。

现在我的问题是:

  1. 我可以在 groupId 中使用减号吗?什么是合理的替代方案?

  2. groupId中非ASCII域名的特殊字符如何处理?

  3. 一个具体问题:我必须找到三个独立公司的groupId: 公司A的域名是“heccare.de” 公司B的域名是“heccare-international.de” 公司C的域名是“heccare-int.de”

什么是合理的groupId?

dns maven

5
推荐指数
2
解决办法
2248
查看次数

Spring Security:拒绝访问后,使用管理员用户登录后转发到原始页面

我使用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。

在此先感谢您的建议和解决方案。

authentication spring-security access-denied

3
推荐指数
1
解决办法
3686
查看次数