Куда я должен поместить проверку, которая может перенаправить запрос?

Вы можете использовать отложенное намерение, получить ожидающее намерение для конструктора модели представления через фабрику, а затем использовать отложенное намерение с вызовом send of this

class LandingViewModelFactory extends ViewModelProvider.NewInstanceFactory {

  PendingIntent pi;

   public LandingViewModelFactory(PendingIntent pi){
     super();
     this.pi = pi;
   }

   @NonNull
   @Override
   public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
      return (T) new LandingViewModel(pi);;
   }
}

PendingIntent pi = PendingIntent.getActivity(context, recCode, intent, flag);
// get pi to view model constructor through factory

viewModel = ViewModelProviders.of(this, new LandingViewModelFactory(pi)).get(LandingViewModel.class)   

//--------------------------------view model
public class LandingViewModel extends ViewModel {
    PendingIntent pi;

   public LandingViewModel(PendingIntent pi){
        this.pi = pi;
   }
   // then call send in view model when you need to start activity
   private void OnStartGame(final StartGameResponse startGameResponse) {
       sessionKeyDao.save(new SessionKey(startGameResponse.getSessionId()));
       pi.send();
   }
6
задан 8 May 2009 в 13:12
поделиться

2 ответа

public class DenyExpiredPasswordAttribute : AuthorizeAttribute
{

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        IPrincipal user = filterContext.HttpContext.User;

        if(user != null)
        {
            if (user.Identity.IsAuthenticated)
            {

                if (CurrentUser.PasswordExpired) // your checking of password expiration
                {
                    filterContext.HttpContext.Response.Redirect("~/Account/ChangePassword?reason=expired");
                }
            }
        }
        base.OnAuthorization(filterContext);
    }
}

это работает нормально, просто отметьте каждый контроллер этим атрибутом, исключите «Учетную запись». Таким образом, ни один пользователь с истекшим атрибутом не сможет продолжить работу до смены пароля.

6
ответ дан 17 December 2019 в 00:14
поделиться

Вы можете посмотреть на добавление обработчика событий PostAuthenticateRequest в global.asax.

protected void Application_Start(object sender, EventArgs e) {
  this.PostAuthenticateRequest += new EventHandler(Global_PostAuthenticateRequest);
}

void Global_PostAuthenticateRequest(object sender, EventArgs e)
{
 if (passwordExpired) {
   Context.Response.Redirect("~/ChangePassword.aspx");
   }
}
1
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: