Вам может понадобиться использовать для цикла здесь, с tranform
, и с помощью cumsum
создать ключ и назначить позицию обратно к исходному df
for x in df.columns:
df.loc[df[x]!=0,x]=df[x].groupby(df[x].eq(0).cumsum()[df[x]!=0]).transform('count')
df
Out[229]:
1 2 3
0 0.0 0.0 0.0
1 4.0 0.0 0.0
2 4.0 3.0 0.0
3 4.0 3.0 2.0
4 4.0 3.0 2.0
5 0.0 0.0 0.0
6 0.0 2.0 0.0
7 0.0 2.0 0.0
8 0.0 0.0 0.0
Или без цикла for
[ 111]Проверьте, разрешен ли пользователь получить доступ к странице в returnUrl, после того, как входят в систему на login.aspx странице. Вы могли бы использовать этот метод UrlAuthorizationModule (или пользовательский, если он работает лучше всего на Вас):
System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal(
returnUrl,
userPrincipal,
GET");
Если пользователь не авторизовывается, просто перенаправьте к странице, к которой может получить доступ пользователь.
Получить пользовательский Принципал:
var roles = System.Web.Security.Roles.GetRolesForUser(username);
var principal = new System.Security.Principal.GenericPrincipal(
new System.Security.Principal.GenericIdentity(username),
roles
);
У нас была подобная проблема, и я зафиксировал ее делающий следующее:
If "LogOut".Equals(e.CommandName) Then
FormsAuthentication.SignOut()
Response.Redirect("~/Login.aspx")
End If
И затем в Login.aspx мы изменяем PostBackUrl на Login.aspx, если он содержит параметр ReturnUrl, который передает пользователя обратно Login.aspx.
Что относительно того, чтобы добавить http модуль, который проверяет если Запрос. UrlReferrer является страницей входа в систему и раз так проверяет, разрешены ли они получить доступ к Запросу. URL и если не перенаправляет их к "Вы, не разрешен просмотреть эту страницу". страница.
Хотя Вы говорите, что не можете изменить имя login.aspx к обработчику HTTP, Вы попытались добавить перенаправление HTTP 301 так, чтобы каждый раз, когда login.aspx требуют, сервер перенаправил пользователя к обработчику HTTP, например, login.ashx?
Несколько опций...
Один, перенаправление вручную назад к Login.aspx, когда пользователь выходится из системы, таким образом, нет никакого ReturnURL. Имейте метаобновление на своих страницах, которое соответствует тайм-ауту сессии, таким образом, пользователь не нажимает на ресурсы, они внезапно не могут добраться до.
Два, всегда регистрируйте кого-то в Page_Load Login.aspx. Эй, почему нет? Я могу думать о некоторых причинах, но возможно они не относятся к Вашей ситуации.
Три, проигнорируйте ReturnURL. Вы не должны называть RedirectFromLoginPage! Перенаправьте пользователя к целевой странице по умолчанию на входе в систему.
Вы могли изменить поток страницы?
То, что я имею в виду, скорее затем перенаправьте назад к login.aspx странице, когда у пользователя нет доступа к ресурсу, перенаправьте их к информационной странице.
Эта страница объясняет причины перенаправления и дает им опции как:
1. Click here to login as another user.
2. Click here to request access to the page.
3. Click here to login again, if your session has expired.
Это удалило бы циклическую ссылку и таким образом проблему.