使用Spring和AngularJS进行单页应用程序登录
我正在创建一个可以被未知和登录用户使用的应用程序。唯一的区别是,登录用户可以使用一些附加功能,如将其内容保存在数据库中 所有通信都基于ajax调用,因此我需要的是拒绝未知用户访问后端的某些控制器函数(端点),在客户端,我需要知道它处于登录状态,以便将这些额外函数设置为活动。只有一页,登录表单应该在对话框中。我有点困惑,因为标准的Spring Security aproach不适合这种情况。我在读教程,但我不能完全理解它 :主要对象是什么?他们在使用使用Spring和AngularJS进行单页应用程序登录,angularjs,spring,spring-security,Angularjs,Spring,Spring Security,我正在创建一个可以被未知和登录用户使用的应用程序。唯一的区别是,登录用户可以使用一些附加功能,如将其内容保存在数据库中 所有通信都基于ajax调用,因此我需要的是拒绝未知用户访问后端的某些控制器函数(端点),在客户端,我需要知道它处于登录状态,以便将这些额外函数设置为活动。只有一页,登录表单应该在对话框中。我有点困惑,因为标准的Spring Security aproach不适合这种情况。我在读教程,但我不能完全理解它 :主要对象是什么?他们在使用login()函数提交时将凭据发送到此端点,但在
login()函数提交时将凭据发送到此端点,但在哪里处理密码检查?如果数据库中有我的用户呢?
是否可以以XML样式编写此配置?我想这可以通过spring security.xml
文件中的
来完成
主要对象
主体对象用于在使用自动服务器身份验证(即LDAP)时获取有关试图登录的用户的基本信息。但是,您只能从主体对象获取用户名。例如,使用JBoss/WildFly服务器,您可以将服务器链接到Active Directory,以允许Microsoft Windows对用户进行身份验证
简单解
首先,SpringSecurity将为您的应用程序增加额外的复杂性,而您听起来并不是在尝试这样做。相反,使用一个简单的Servlet过滤器。如果您在JBoss/WildFly服务器上使用LDAP,您可以发布到j_security_check
,如果提供了正确的凭据,服务器将向筛选器发送请求。在过滤器内部,您可以使用主体对象的getName()
函数获取用户名,以便将其存储在用户会话中。但是,如果您不使用LDAP,您可以向Javaservlet或Spring控制器(使用@RequestMapping)发送一个简单的POST,尝试登录用户并在会话中存储用户信息
此时,您可以过滤出允许用户查看的URL。例如,如果URL的第一个目录中包含单词“administrator”,则包含/administrator/some/other/stuff.jsp的URL可能会受到限制