1

我有一个使用登录网络流的 CAS 3.4.9。
我需要在特定的操作/视图中直接调用登录 webflow。
怎么做到呢?

如果不可能(我相信是出于安全原因),如何在 CAS 上使用另一个 webflow 提供另一个“服务”?
以这种方式,我必须使用什么链接来调用它?
谢谢你。

4

1 回答 1

1

你有两个选择。扩展您要在其中进行调用的类,例如在 generateServiceTicket 中,或创建一个新类并将您的类注入到 CAS 登录 Web 流中。

我在我的 CAS 登录 webflow 中注入了一个陷阱,以检查用户是否在过去 365 天内接受了策略。

通常在warn决策状态下,它会返回重定向操作状态,但我会捕获用户,因此将检查策略。

    <decision-state id="warn">
            <if test="flowScope.warnCookieValue" then="showWarningView" else="checkPolicy" />
    </decision-state>

然后它转换到我的checkPolicy状态

    <action-state id="checkPolicy">
        <evaluate expression="checkPolicyAction"/>
            <transition on="success" to="redirect"/>
            <transition on="error" to="viewLoginForm"/>
            <transition on="redirectPolicy" to="redirectPolicy"/>
            <transition on="gateway" to="redirectPolicy"/>
    </action-state>

该表达式checkPolicyAction在 cas-servlet.xml 中定义为 java 类,该类执行该doExecute方法并返回到 webflow 的各种状态,如您在前面的 xml 中看到的。最重要的是,redirectPolicy将用户重定向到一项新服务,然后让他们接受该政策,然后他们可以继续他们打算做的事情。

看看https://github.com/Unicon/cas-password-manager - 这是一家公司扩展 CAS 的登录网络流程以捕获密码更新的地方。这是我关于如何诱捕用户的大部分想法的地方。CAS 用户手册https://wiki.jasig.org/display/CASUM/也是一个很好的资源。

于 2013-07-22T19:02:49.880 回答