我制作了一个自定义过滤器,用于触发每个操作(请求)。所以问题似乎是,当用户第一次刷新操作时,它永远不会再次运行。这就像它的缓存或其他东西。我第一次触发过滤器,所以代码正在工作(-ish),但是它正在杀死我的页面的负载。这里基本上是代码。
using MonoRailHelper;
namespace evergreen.Controllers
{
public class loggedinFilterAttribute : FilterAttribute
{
public loggedinFilterAttribute() : base ( ExecuteEnum.BeforeAction, typeof(AuthenticationFilter))
{
String username = Authentication.authenticate();
// save user in database
authUser[] authUser_list = ActiveRecordBase<authUser>.FindAll();
authUser temp = null;
foreach (authUser authUser in authUser_list)
{
if (!string.IsNullOrEmpty(authUser.Nid) && authUser.Nid.ToUpper() == username.ToUpper())
{ temp = authUser; }
}
temp.Logedin = true;
temp.LastActive = DateTime.Now;
temp.Save();
}
}
[loggedinFilter]
[Layout("default"), Rescue("generalerror")]
public abstract class BaseController : MonoRailHelper.HelperBaseController
{
function a bunch
}
}
}
loggedinFilter就是要触发和temp.LastActive = DateTime.Now;当你在这里转到“新”页面时会在数据库中向上移动,但是当你回去时它就没有了。没有任何变化。
任何人对如何解决这个问题都有任何想法?
感谢您的帮助..干杯-Jeremy
答案 0 :(得分:0)
您不应在过滤器属性构造函数中执行身份验证。
相反,请遵循instructions for creating a filter:实现IFilter(您的身份验证逻辑来到此处),然后使用FilterAttribute将过滤器应用于控制器。您可以然后(如果需要)将FilterAttribute包装在您自己的属性实现中。
Here's a Monorail auth filter that uses ActiveRecord,您可以将其用作参考。