0

这是我的第一个问题,所以我为我的英语道歉:)

我们正在使用Jasig CAS SSO进行身份验证构建 MVC 4 应用程序。

它工作得很好,但我需要在用户身份验证后执行自定义操作。

步骤应如下所示:

  1. 用户访问我们的站点到由 AuthorizeAttribute 装饰的 HomeController
  2. 控制器将用户重定向到 CAS
  3. 用户传递他的用户名和密码
  4. CAS 正确验证用户并重定向到我们的站点
  5. (这里是自定义操作)登录后我们建立会话(从数据库获取用户参数并将它们放入 chache 等)

动作5.登录成功后只运行一次!每个下一个请求都会跳过这一步。

我已经阅读了有关表单身份验证的 CAS 和 MSDN 文档,但我没有任何信息。

我发现我可以扩展 AuthorizeAttribute 并覆盖 AuthorizeCore 方法,但它会在每个请求中运行。

感谢帮助

4

1 回答 1

0

我自己找到了答案。也许有更好的解决方案,但这个解决方案是我想要的。

要在 Jasig CAS 中登录后进行一些自定义操作,您需要实现

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)

Global.asax

示例代码:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            //must check if user is authenticated (this method can be called before authentication) 
            if (Context.User.Identity.IsAuthenticated && Context.Session != null && Context.Session["IsLogged"] == null)
            {
               Context.Session.Add("YourKey", YourData);
               Context.Session.Add("IsLogged", true);
            }

        }

如果需要,可能在标准表单身份验证中使用相同的方法

于 2014-02-05T09:21:20.660 回答