根据Spring中的用户角色映射Welcome文件

时间:2016-12-12 14:03:34

标签: spring jsp spring-mvc spring-security

我的Web应用程序有两个角色,User和Admin,每个角色都有不同的jsp页面。现在,我如何为这两个不同的用户映射不同的欢迎文件? USer的Server / webapp / user.jsp admin / webpp / admin.jsp for Admin

让我们说,如果添加欢迎文件为user.jsp / user主页。如何为admin用户在user.jsp中添加条件?我觉得Cookies或过滤器可以提供帮助。

2 个答案:

答案 0 :(得分:1)

以下是两种变体。

变体1。您可以使用注释并为每个角色制作不同的文件。 例如,您的管理员有角色"ROLE_ADMIN"

只需添加:

@PreAuthorize("hasRole('ROLE_ADMIN')")
@RequestMapping("/login")
public String getAdmin() {
return "admin";
}

用户也一样:

@PreAuthorize("hasRole('ROLE_USER')")
@RequestMapping("/login")
public String getUser() {
return "user";
}

变体2。如果你想根据角色在.jsp文件中做一些特殊的事情,请使用:

<sec:authorize access="hasRole('ROLE_ADMIN')">
This content will only be visible to users who have
the "ROLE_ADMIN" authority in their list of <tt>GrantedAuthority</tt>s.
</sec:authorize>

要使此标记有效,请在.jsp文件的开头添加:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

有关authorize代码here

的详情

答案 1 :(得分:0)

您可以在控制器中处理它:

    @RequestMapping(value="/loginUser")
    public String controllerLogin(){
        String userType = //code to get user type

        //code to get view depending on the userType (like a switch)

        return "view";
    }

如果您返回没有@RequestBody的字符串,则将其视为视图名称。 这是来自Spring 3.X,我想这就是你正在使用的。