精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-15
最后修改:2008-11-15
在某些应用场合中,我们可能需要用到切换用户的功能,从而以另一用户的身份进行相关操作。这一点类似于在Linux系统中,用su命令切换到另一用户进行相关操作。 一般来说,切换用户功能是从高级用户切换到普通用户,从而以普通用户的身份来进行一些操作。相反,普通用户通常是不能切换为高级用户的,如果可以的话那就是越权了。 <bean id="switchUserProcessingFilter" class="org.acegisecurity.ui.switchuser.SwitchUserProcessingFilter"> <property name="userDetailsService" ref="jdbcDaoImpl" /> <property name="switchUserUrl"><value>/j_acegi_switch_user</value></property> <property name="exitUserUrl"><value>/j_acegi_exit_user</value></property> <property name="targetUrl"><value>/index.jsp</value></property> </bean>
属性说明:
2、增加切换用户页面switchUser.jsp <form action="<c:url value='j_acegi_switch_user'/>" method="POST"> <table> <tr><td>User:</td><td><input type='text' name='j_username'></td></tr> <tr><td colspan='2'><input name="switch" type="submit" value="Switch to User"></td></tr> </table> </form> 其中,j_username是我们必须提供的目标用户名。由于SwitchUserProcessingFilter中未暴露j_username这一属性,故我们不能自定义其名字。所以,我们只要提供了请求路径和目标用户名,就可以实现切换到指定用户的功能。
3、增加退回原来用户身份的页面exitUser.jsp <form action="<c:url value='j_acegi_exit_user'/>" method="POST"> <table> <tr><td colspan='2'><input name="exit" type="submit" value="Exit"></td></tr> </table> </form>
这部分比较简单,只要我们提交请求路径j_acegi_exit_user,就可以实现退回原来用户身份的功能。
4、在filterInvocationInterceptor中增加安全授权配置 <bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager" /> <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" /> <property name="objectDefinitionSource"> <value><![CDATA[ ...... /switchuser.jsp=AUTH_SUPERUSER /j_acegi_switch_user=AUTH_SUPERUSER ...... ]]></value> </property> </bean> 这样,我们指定了只有超级用户才能访问切换用户页面和切换用户的URL。
5、例子说明
6、其他说明
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-30
我想问一下楼主是怎么处理“退回原用户”的问题的,如果没有切换过用户就退回用户的话会出异常,并导致无法再次登陆。
|
|
返回顶楼 | |
浏览 2404 次