日期:2014-05-18  浏览次数:20724 次

SpringSecurity用户验证登录问题
系统用的是SpringSecurity来做的用户验证和授权,现在的有一个需求,是从其他系统登录后,点击链接来进入我们系统,他们只给一个用户名,要我们实现用户登录并有权限访问我们系统。本人对SpringSecurity不太熟悉,没有思路,求各路大神相助。
SpringSecurity 用户登录

------解决方案--------------------
我感觉还是 cas 单点登录设计下吧
------解决方案--------------------
用cas吧。
------解决方案--------------------
--------他们只给一个用户名,要我们实现用户登录并有权限访问我们系统

任意用户名??,,那可以这样,在验证是否登录的地方,首先获取跳转过来的ip如果是你说的“他们”系统的ip,如果是 允许访问, 如果不是 拒绝访问。。。

还是把这个用户名放入session吧,不然到时候获取当前用户信息的时候直接空引用了。。。


------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

单点登录应该和SpringSecurity没关系吧

你有什么想法吗?

或者是你的系统只需要用户名就可以了,不需要密码?

不是,是他们不提供密码,我们系统本身登录是需要密码的,但是如果是从他们系统登录过来,就不需要二次验证密码,所以只需要验证用户名就可以。

那另一边系统里面的用户名与你这边系统里面是否有对应的用户?
如果有对应的用户。
你可以实现UserDetailsService接口,来处理登录,spring-security的配置文件也做修改,不要使用默认的配置。 实现UserDetailsService接口后,并重写loadUserByUsername方法。 loadUserByUsername方法需要返回一个UserDetails 对象,你可以先从你的系统里面根据用户名查找用户,如果用户存在,就创建一个User用户,设置好用户名,与权限,并将它的密码设置为""空字符串,然后返回。

你说的我已经试过了,但是如果把密码设置为空,spring-security好像验证不通过,不知道你试过没有。


我没有这样试过,你可以导入源码后调试 跟踪到源码里面看看,看他是怎么来处理的  看能不能做些扩展。 

如果密码为空字符串不行
或者你可以先定义一个Servlet , 该Servlet来接受另外网站跳转过来的请求,然后在Request中加入一个password,比如说value=aaa 然后从该Servlet跳转(Foward)到你的登录入口 。 还是按照9楼的方法,但是密码不要是空字符串,而是aaa 。

就是说用一个Servelt来代理其他网站的登录请求,并在该Servlet为其他网站的请求加入一个默认的密码。 然后再将请求Foward到SpringSecurity的登录入口
------解决方案--------------------
精神支持一下!
------解决方案--------------------
进入过滤器的时候,对特定工号加个默认密码,后续的不就一样处理了
------解决方案--------------------
从他们的网址上解析用户名不就可以确保用户是从他们网站上连接过来的么。