spring - 使用 Spring 的登录页面
问题描述
我正在 Spring 中设置我的安全支持,并且正在探索它所提供的功能。在设置我的登录 URL 和视图时,我需要为主页和登录 URL 注册简单的控制器。具体来说,代码是:
@Override
public void addViewControllers(ViewControllerRegistry registry){
registry.addViewController("/").setViewName("home");
registry.addViewController("/login");
}
在行registry.addViewController("/").setViewName("home");
中,该行似乎只是为 URL“/”添加了控制器,并且为 GET 到该 URL 只是使用视图“home”进行渲染。
我做对了吗?主要问题是关于 line registry.addViewController("/login");
。在这里,我为“/login” URL 添加控制器。
但是应用程序如何知道使用哪个视图呢?当我尝试该应用程序时,它确实使用了我创建的“登录”视图。
解决方案
好吧,你在正确的轨道上,但并不完全。如果您没有登录并打开 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”。您可以添加代码以返回其他页面的不同视图。
推荐阅读
- python - 获取 MessageReference 对象的作者
- android - MediaRecorder - 安全的输出格式(视频容器)和编解码器,即使设备突然关闭也能录制可播放的视频
- angular - Angular:ng 测试为 api 提供 404 错误
- sql - 使用 Power shell 脚本 DPM 2019 将最新的数据库备份恢复到网络文件夹
- homebrew - 自制软件损坏;MacOS Big Sur M1 Postgres;无法 brew start services postgres,Bootstrap failed: 5: Input/output error
- r - GLS REML 与 ML 以及与 LM 的比较
- python - Python - 将列表中的数据写入特定的 Excel 列
- dbeaver - 如何将 DBeaver 连接到 CockroachDB Serverless?
- discord - 问。如何提及发件人和他们提及的人(discord py.)
- firebase - 如何删除无法删除的谷歌广告转化操作,因为它用于在广告系列级别进行优化