2012-04-22 82 views
1

在开发过程中,我发现自己经常不得不重新启动我的应用程序,从而导致手动登录的额外步骤。使用弹簧安全核心自动在grails中自动登录

我认为我可以在引导添加方法调用springSercurityService.reauthenticate(“为myuser”),但是我没有sucessfull

在控制器做同样的事情在应用程序启动后工作正常,所以它仅仅是在引导它不起作用。我调试了代码而没有看到任何明显的错误。

+0

泰德纳莱德的答案可能是你最好的选择。身份验证存储在会话中,BootStrap中没有会话或请求活动,因此强制进行身份验证没有任何意义。 – 2012-04-22 15:27:20

回答

2

我打了同样的问题,我如何解决它是使用书签(或自定义浏览器的“搜索引擎”),这使得它很容易重新登录。启用深层链接,它使很容易继续在同一页面上工作。重新启动服务器后,只需刷新页面,它就会将您重定向到登录页面。只需激活小书签(或“搜索引擎”),它会将您登录并重定向到您正在处理的页面。

我有一个详细的blog post显示如何获得此设置。

+0

感谢这个泰德 我最终创建了一个简单的控制器,将调用springsecurityService.reauthenticate(),确保检查环境是否是dev 必须这样做因为我有一个自定义身份验证提供程序,需要登录过程的硬件密钥 但是,您的解决方案很好,一般在大多数情况下是首选 – Iman 2012-04-25 12:14:42

+0

嗨伊曼,请分享您的控制器代码或详细阐述它?我也想做同样的事情,但被困住了。 – gtiwari333 2012-08-13 00:03:35

0

如果只是为了避免登录开发模式,您可以设置interceptUrlMap属性。该属性将允许您以不会要求您登录的方式设置开发模式。

import grails.plugins.springsecurity.SecurityConfigType 

grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap 

environments { 
    development { 
     grails.plugins.springsecurity.interceptUrlMap = [ 
      '/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'] 
     ] 
    } 

} 
+0

我实际上需要执行登录,以便我可以获取用户信息。否则我的应用程序将无法正常工作。所以一切都需要工作,如果我做了一个手动登录 – Iman 2012-04-22 11:41:40

0

另一个选择是添加一个servlet过滤器,如果环境是开发,它将登录默认用户。