- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要将现有应用程序与 Acegi/Spring 安全性连接起来。
为了开始,我正在寻找一条简单的信息:在这种情况下,从我的应用程序调用的 HttpServletRequest.getUserPrincipal() 是否会正确返回通过 Spring 获得的用户名(而不是使用 Spring 特定的对象)?我用谷歌搜索了关于此的相互矛盾的信息。
我假设如果 Acegi 是用过滤器实现的,它能够重载 Servlet API 的 getUserPrincipal(),对吧?
附属问题:如果默认不是这样,有什么办法可以开启吗?
谢谢,
-埃里克
最佳答案
正如之前用户的回答,spring security 支持 getUserPrincipal 和 isUserInRole。以下是 Spring Security 是如何做到的。
当您配置 spring 时,它可以加载以下过滤器:
http://static.springframework.org/spring-security/site/reference/html/ns-config.html#filter-stack
作为标准过滤器配置的一部分,加载了 SecurityContextHolderAwareRequestFilter
过滤器。
您可以看到它包装并将 HttpServletRequest
对象更改为 SecurityContextHolderAwareRequestWrapper
类,它扩展了 HttpServletRequestWrapper
实现了 HttpServletRequest
并将其反馈给标准的 Servlet Filter doFilter 链。由于 spring 安全过滤器应该被配置为第一个过滤器,所有后续类将看到 SecurityContextHolderAwareRequestWrapper
。这包括此过滤器后面的 JSP 页面或 Servlet。
当您从 JSP 页面、Servlet 或此过滤器后面的任何框架调用 isUserInRole
或 getUserPrincipal
时,它正在调用 HttpServletRequest
Spring Security 的实现。
关于java - Acegi/Spring 安全支持 getUserPrincipal() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/636172/
我正在开始新项目。客户端界面基于 GWT(和 GXT),我没有说它是预先确定的。但是,我可以选择服务器端,这样我就可以玩得开心,并希望在这个过程中学到一些新东西。一些要求是: 与服务器的交换将通过使用
spring Acegi security 可以用于社交网络应用程序,用户可以设置他们的安全首选项以仅与他们的 friend 共享他们的数据吗? Acegi 教程的常见场景是您希望为每个用户角色授权操
谷歌搜索后,我发现引用表明 acegi 安全约束在前进时不受支持。 我在我的应用程序中对其进行了测试,我可以确认我遇到了这个问题。 有谁知道在推荐的 spring security 插件中是否发现了同
我正在寻找使用 Grails 的 Acegi 插件实现密码检索过程的方法...Google 失败了... 最佳答案 恕我直言,这目前不是 Acegi 插件的一部分。我已将忘记密码操作添加到 Login
我有一个使用 ldap acegi-security-1.0.2.jar 的应用程序。我能够使用 Activity 目录对用户进行身份验证。我想为我的应用程序添加 NTLM 自动登录功能。我可以知道我
我看过其他问题并查看了文档,但没有找到明确的示例或答案。 1)我需要一个新的userDetailsService类 2)我是否需要一个新的userDetailsService类和GrailsD
我们正在使用Grails Acegi插件0.5.1进行身份验证以及验证码功能。关于输入验证错误,我想生成一个新的Captcha值。我正在使用用户 Controller 中的render方法来向模板显示
我继承了一个Grails应用程序,该应用程序使用Acegi 0.5.3插件。 可以通过两个完全不同的URL(例如app.domainone.com和app.domaintwo.com)访问该应用程序。
这是this question的一个分支。之所以分支出去,是因为该问题的初衷是其他目的。 我正在寻找检查密码是否过期的最简单方法。如果密码的时间超过N天,则密码将过期,其中N是存储在另一个表中的值。
我在Grails应用中使用了Acegi(又名Spring Security)插件。在SecurityConfig.groovy中,我添加了这一行 userName = 'email' 以便将电子邮件字
我有一个使用 Acegi Security 的旧版 Java Web 应用程序。我正在尝试从 jsp 页面中删除所有 java scriplet。是否有任何 ACEGI 标签可用于替换以下表达式: S
我是 Acegi 的新手。我让它以最简单的形式工作。我必须登录才能访问 protected 页面(我遵循了他们的教程)。 现在我想获得每次成功登录的数据库日志。有没有一种简单的方法可以做到这一点?每次
我想更改 Acegi - 插件使用的身份验证过程。它应该是一个完全定制的过程。自定义登录表单 + 自定义身份验证方法。 显然,关于这个主题的文档很少。 在 The Definitive Guide t
我正在开发一个基于 Grails 的 Web 应用程序,我需要选择这两个框架之一进行身份验证。在您看来,选择 Acegi 的标准是什么,选择 Apache Shiro 的标准是什么? 最佳答案 我还要
引用 http://www.grails.org/AcegiSecurity+Plugin+-+Basic+Tutorial 如果我需要自定义字段,例如我需要性别、年龄等。 怎么做? 最佳答案 只需修
我现有的 Java 应用程序正在使用 Acegi 进行身份验证/授权。我们的新 Web 界面最好用 Django 编写。我希望 Django 维护用户 - 注册等。Django 将共享或更新 Aceg
我从 acegi 迁移到 spring-security-core 的过程很糟糕。当我尝试登录时,我不断收到以下错误: The specified user domain class 'com.xxx
我正在做一个 grails 遗留项目。存在一个名为 User 的域类。它包含密码、用户名、角色等。 本项目使用 Spring Security 进行角色管理。我想添加凭据到期(强制用户更新其密码)。
我正在从grails 1.3.9 / acegi升级到grails 2.4.2 / spring security。 在acegi中,我有一个声明的getAuthoritiesMethod方法。此方法
使用此登录代码是否有类似的注销逻辑: // login account def autht = new AuthToken(username, password) def authtoken = da
我是一名优秀的程序员,十分优秀!