Spring登录页面

时间:2020-04-29 10:57:10

标签: spring spring-security

我将在Spring中设置我的安全支持,并在探索它所提供的功能。在设置我的登录URL和视图时,我需要为home和登录URL注册简单的控制器。具体来说,代码是:

@Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/login");
    }

registry.addViewController("/").setViewName("home");行中,该行似乎只是为URL“ /”添加了控制器,而对该URL的GET仅使用视图“ home”进行呈现。
我说对了吗?主要问题是关于第registry.addViewController("/login");行。在这里,我为“ / login” URL添加了控制器。
但是应用程序如何知道要使用哪个视图?当我尝试该应用程序时,它确实使用了我创建的“登录”视图。

1 个答案:

答案 0 :(得分:0)

好吧,您处在正确的轨道上,但并不完全正确。如果您尚未登录并打开URL“ yourdomain.tld /”,您将被重定向到URL“ yourdomain.tld / home”,该URL通常可以是登录页面。 (第一行)。当然,您需要一个控制器来处理此请求并返回正确的JSP / JSF页面。

不需要您的第二行。诀窍在于,通过这样的配置,您可以将URL“ yourdoamin.tld /”与用于登录用户的其他页面一起使用。

要回答您的主要问题,您需要一个控制器来控制要使用的每个URL或部分URL。在此控制器内,您可以根据请求的URL选择视图。

示例:

@Controller
@RequestMapping(value="/info")
@Scope(value="session")
public class InfoController extends AbstractWebController {

    @RequestMapping
    public ModelAndView infoPage() {
        ModelAndView mav = this.getModelAndView("info/infopage");
        return mav;
    }
}

此控制器负责所有以“ yourdomain.tld / info”开头的URL。如您所见,我只有URL“ yourdomain.tld / info”返回正确的视图。在此示例中,我返回“ infopage.jsp”。您可以添加代码以返回其他页面的不同视图。