1
ALTER
PROCEDURE
dbo.aspnet_Membership_UpdateUserInfo
2
@ApplicationName
NVARCHAR
(
256
),
3
@UserName
NVARCHAR
(
256
),
4
@IsPasswordCorrect
BIT
,
5
@UpdateLastLoginActivityDate
BIT
,
6
@MaxInvalidPasswordAttempts
INT
,
7
@PasswordAttemptWindow
INT
,
8
@TimeZoneAdjustment
INT
9
AS
10
BEGIN
11
DECLARE
@UserId
UNIQUEIDENTIFIER
12
DECLARE
@IsApproved
BIT
13
DECLARE
@IsLockedOut
BIT
14
DECLARE
@LastLockoutDate
DATETIME
15
DECLARE
@FailedPasswordAttemptCount
INT
16
DECLARE
@FailedPasswordAttemptWindowStart
DATETIME
17
DECLARE
@FailedPasswordAnswerAttemptCount
INT
18
DECLARE
@FailedPasswordAnswerAttemptWindowStart
DATETIME
19![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/*声明关于密码的一堆变量*/
20
21![None.gif](/Images/OutliningIndicators/None.gif)
22
DECLARE
@ErrorCode
INT
23
SET
@ErrorCode
=
0
24![None.gif](/Images/OutliningIndicators/None.gif)
25
DECLARE
@TranStarted
BIT
26
SET
@TranStarted
=
0
27![None.gif](/Images/OutliningIndicators/None.gif)
28
IF
(
@@TRANCOUNT
=
0
)
--
如果当前活动事务为0,开始事务并设置事务参数为1
29
BEGIN
30
BEGIN
TRANSACTION
31
SET
@TranStarted
=
1
32
END
33
ELSE
34
SET
@TranStarted
=
0
35![None.gif](/Images/OutliningIndicators/None.gif)
36
DECLARE
@DateTimeNowUTC
DATETIME
--
声明当前时间并获取当前时间
37
EXEC
dbo.aspnet_GetUtcDate
@TimeZoneAdjustment
,
@DateTimeNowUTC
OUTPUT
38![None.gif](/Images/OutliningIndicators/None.gif)
39![None.gif](/Images/OutliningIndicators/None.gif)
40
SELECT
@UserId
=
u.UserId,
41
@IsApproved
=
m.IsApproved,
42
@IsLockedOut
=
m.IsLockedOut,
43
@LastLockoutDate
=
m.LastLockoutDate,
44
@FailedPasswordAttemptCount
=
m.FailedPasswordAttemptCount,
45
@FailedPasswordAttemptWindowStart
=
m.FailedPasswordAttemptWindowStart,
46
@FailedPasswordAnswerAttemptCount
=
m.FailedPasswordAnswerAttemptCount,
47
@FailedPasswordAnswerAttemptWindowStart
=
m.FailedPasswordAnswerAttemptWindowStart
48
FROM
dbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m
WITH
( UPDLOCK )
49
WHERE
LOWER
(
@ApplicationName
)
=
a.LoweredApplicationName
AND
50
u.ApplicationId
=
a.ApplicationId
AND
51
u.UserId
=
m.UserId
AND
52
LOWER
(
@UserName
)
=
u.LoweredUserName
53![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/*查询此用户的信息,字段都是上面声明的有关于密码的变量*/
54![None.gif](/Images/OutliningIndicators/None.gif)
55
IF
(
@@rowcount
=
0
)
--
如果受影响行数为0,回滚事物并返回错误代码
56
BEGIN
57
SET
@ErrorCode
=
1
58
GOTO
Cleanup
59
END
60![None.gif](/Images/OutliningIndicators/None.gif)
61
IF
(
@IsLockedOut
=
1
)
--
如果用户被锁定,也回滚,不允许操作
62
BEGIN
63
GOTO
Cleanup
64
END
65![None.gif](/Images/OutliningIndicators/None.gif)
66
IF
(
@IsPasswordCorrect
=
0
)
--
如果密码不正确
67
BEGIN
68
IF
(
@DateTimeNowUTC
>
DATEADD
( minute,
@PasswordAttemptWindow
,
@FailedPasswordAttemptWindowStart
) )
69
BEGIN
70
SET
@FailedPasswordAttemptWindowStart
=
@DateTimeNowUTC
71
SET
@FailedPasswordAttemptCount
=
1
72
END
73
ELSE
74
BEGIN
75
SET
@FailedPasswordAttemptWindowStart
=
@DateTimeNowUTC
76
SET
@FailedPasswordAttemptCount
=
@FailedPasswordAttemptCount
+
1
77
END
78![None.gif](/Images/OutliningIndicators/None.gif)
79
BEGIN
80
IF
(
@FailedPasswordAttemptCount
>=
@MaxInvalidPasswordAttempts
)
81
BEGIN
82
SET
@IsLockedOut
=
1
83
SET
@LastLockoutDate
=
@DateTimeNowUTC
84
END
85
END
86
END
87![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/*处理密码相关的问题*/
88
ELSE
89
BEGIN
90
IF
(
@UpdateLastLoginActivityDate
=
1
)
--
如果更新最近登陆和活跃时间
91
BEGIN
92
UPDATE
dbo.aspnet_Membership
93
SET
LastLoginDate
=
@DateTimeNowUTC
94
WHERE
UserId
=
@UserId
95
--
更新最近登陆时间
96
97
IF
(
@@ERROR
<>
0
)
98
BEGIN
99
SET
@ErrorCode
=
-
1
100
GOTO
Cleanup
101
END
102![None.gif](/Images/OutliningIndicators/None.gif)
103
UPDATE
dbo.aspnet_Users
104
SET
LastActivityDate
=
@DateTimeNowUTC
105
WHERE
@UserId
=
UserId
106
--
更新最近活跃时间
107
IF
(
@@ERROR
<>
0
)
108
BEGIN
109
SET
@ErrorCode
=
-
1
110
GOTO
Cleanup
111
END
112
END
113![None.gif](/Images/OutliningIndicators/None.gif)
114
IF
(
@FailedPasswordAttemptCount
>
0
OR
@FailedPasswordAnswerAttemptCount
>
0
)
115
--
--如果密码尝试次数或者答案尝试次数大于0(此时输入正确,则全部还原处世状态)
116
BEGIN
117
SET
@FailedPasswordAttemptCount
=
0
118
SET
@FailedPasswordAttemptWindowStart
=
CONVERT
(
DATETIME
,
'
17540101
'
,
112
)
119
SET
@FailedPasswordAnswerAttemptCount
=
0
120
SET
@FailedPasswordAnswerAttemptWindowStart
=
CONVERT
(
DATETIME
,
'
17540101
'
,
112
)
121
SET
@LastLockoutDate
=
CONVERT
(
DATETIME
,
'
17540101
'
,
112
)
122
END
123
END
124![None.gif](/Images/OutliningIndicators/None.gif)
125
UPDATE
dbo.aspnet_Membership
126
SET
IsLockedOut
=
@IsLockedOut
, LastLockoutDate
=
@LastLockoutDate
,
127
FailedPasswordAttemptCount
=
@FailedPasswordAttemptCount
,
128
FailedPasswordAttemptWindowStart
=
@FailedPasswordAttemptWindowStart
,
129
FailedPasswordAnswerAttemptCount
=
@FailedPasswordAnswerAttemptCount
,
130
FailedPasswordAnswerAttemptWindowStart
=
@FailedPasswordAnswerAttemptWindowStart
131
WHERE
@UserId
=
UserId
132
--
-使用上面的参数更新表
133
IF
(
@@ERROR
<>
0
)
134
BEGIN
135
SET
@ErrorCode
=
-
1
136
GOTO
Cleanup
137
END
138![None.gif](/Images/OutliningIndicators/None.gif)
139
IF
(
@TranStarted
=
1
)
140
BEGIN
141
SET
@TranStarted
=
0
142
COMMIT
TRANSACTION
143
END
144![None.gif](/Images/OutliningIndicators/None.gif)
145
RETURN
@ErrorCode
146![None.gif](/Images/OutliningIndicators/None.gif)
147
Cleanup:
148![None.gif](/Images/OutliningIndicators/None.gif)
149
IF
(
@TranStarted
=
1
)
150
BEGIN
151
SET
@TranStarted
=
0
152
ROLLBACK
TRANSACTION
153
END
154![None.gif](/Images/OutliningIndicators/None.gif)
155
RETURN
@ErrorCode
156![None.gif](/Images/OutliningIndicators/None.gif)
157
END
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![None.gif](/Images/OutliningIndicators/None.gif)
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![None.gif](/Images/OutliningIndicators/None.gif)
11
![None.gif](/Images/OutliningIndicators/None.gif)
12
![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
14
![None.gif](/Images/OutliningIndicators/None.gif)
15
![None.gif](/Images/OutliningIndicators/None.gif)
16
![None.gif](/Images/OutliningIndicators/None.gif)
17
![None.gif](/Images/OutliningIndicators/None.gif)
18
![None.gif](/Images/OutliningIndicators/None.gif)
19
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
20
![None.gif](/Images/OutliningIndicators/None.gif)
21
![None.gif](/Images/OutliningIndicators/None.gif)
22
![None.gif](/Images/OutliningIndicators/None.gif)
23
![None.gif](/Images/OutliningIndicators/None.gif)
24
![None.gif](/Images/OutliningIndicators/None.gif)
25
![None.gif](/Images/OutliningIndicators/None.gif)
26
![None.gif](/Images/OutliningIndicators/None.gif)
27
![None.gif](/Images/OutliningIndicators/None.gif)
28
![None.gif](/Images/OutliningIndicators/None.gif)
29
![None.gif](/Images/OutliningIndicators/None.gif)
30
![None.gif](/Images/OutliningIndicators/None.gif)
31
![None.gif](/Images/OutliningIndicators/None.gif)
32
![None.gif](/Images/OutliningIndicators/None.gif)
33
![None.gif](/Images/OutliningIndicators/None.gif)
34
![None.gif](/Images/OutliningIndicators/None.gif)
35
![None.gif](/Images/OutliningIndicators/None.gif)
36
![None.gif](/Images/OutliningIndicators/None.gif)
37
![None.gif](/Images/OutliningIndicators/None.gif)
38
![None.gif](/Images/OutliningIndicators/None.gif)
39
![None.gif](/Images/OutliningIndicators/None.gif)
40
![None.gif](/Images/OutliningIndicators/None.gif)
41
![None.gif](/Images/OutliningIndicators/None.gif)
42
![None.gif](/Images/OutliningIndicators/None.gif)
43
![None.gif](/Images/OutliningIndicators/None.gif)
44
![None.gif](/Images/OutliningIndicators/None.gif)
45
![None.gif](/Images/OutliningIndicators/None.gif)
46
![None.gif](/Images/OutliningIndicators/None.gif)
47
![None.gif](/Images/OutliningIndicators/None.gif)
48
![None.gif](/Images/OutliningIndicators/None.gif)
49
![None.gif](/Images/OutliningIndicators/None.gif)
50
![None.gif](/Images/OutliningIndicators/None.gif)
51
![None.gif](/Images/OutliningIndicators/None.gif)
52
![None.gif](/Images/OutliningIndicators/None.gif)
53
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
54
![None.gif](/Images/OutliningIndicators/None.gif)
55
![None.gif](/Images/OutliningIndicators/None.gif)
56
![None.gif](/Images/OutliningIndicators/None.gif)
57
![None.gif](/Images/OutliningIndicators/None.gif)
58
![None.gif](/Images/OutliningIndicators/None.gif)
59
![None.gif](/Images/OutliningIndicators/None.gif)
60
![None.gif](/Images/OutliningIndicators/None.gif)
61
![None.gif](/Images/OutliningIndicators/None.gif)
62
![None.gif](/Images/OutliningIndicators/None.gif)
63
![None.gif](/Images/OutliningIndicators/None.gif)
64
![None.gif](/Images/OutliningIndicators/None.gif)
65
![None.gif](/Images/OutliningIndicators/None.gif)
66
![None.gif](/Images/OutliningIndicators/None.gif)
67
![None.gif](/Images/OutliningIndicators/None.gif)
68
![None.gif](/Images/OutliningIndicators/None.gif)
69
![None.gif](/Images/OutliningIndicators/None.gif)
70
![None.gif](/Images/OutliningIndicators/None.gif)
71
![None.gif](/Images/OutliningIndicators/None.gif)
72
![None.gif](/Images/OutliningIndicators/None.gif)
73
![None.gif](/Images/OutliningIndicators/None.gif)
74
![None.gif](/Images/OutliningIndicators/None.gif)
75
![None.gif](/Images/OutliningIndicators/None.gif)
76
![None.gif](/Images/OutliningIndicators/None.gif)
77
![None.gif](/Images/OutliningIndicators/None.gif)
78
![None.gif](/Images/OutliningIndicators/None.gif)
79
![None.gif](/Images/OutliningIndicators/None.gif)
80
![None.gif](/Images/OutliningIndicators/None.gif)
81
![None.gif](/Images/OutliningIndicators/None.gif)
82
![None.gif](/Images/OutliningIndicators/None.gif)
83
![None.gif](/Images/OutliningIndicators/None.gif)
84
![None.gif](/Images/OutliningIndicators/None.gif)
85
![None.gif](/Images/OutliningIndicators/None.gif)
86
![None.gif](/Images/OutliningIndicators/None.gif)
87
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
88
![None.gif](/Images/OutliningIndicators/None.gif)
89
![None.gif](/Images/OutliningIndicators/None.gif)
90
![None.gif](/Images/OutliningIndicators/None.gif)
91
![None.gif](/Images/OutliningIndicators/None.gif)
92
![None.gif](/Images/OutliningIndicators/None.gif)
93
![None.gif](/Images/OutliningIndicators/None.gif)
94
![None.gif](/Images/OutliningIndicators/None.gif)
95
![None.gif](/Images/OutliningIndicators/None.gif)
96
![None.gif](/Images/OutliningIndicators/None.gif)
97
![None.gif](/Images/OutliningIndicators/None.gif)
98
![None.gif](/Images/OutliningIndicators/None.gif)
99
![None.gif](/Images/OutliningIndicators/None.gif)
100
![None.gif](/Images/OutliningIndicators/None.gif)
101
![None.gif](/Images/OutliningIndicators/None.gif)
102
![None.gif](/Images/OutliningIndicators/None.gif)
103
![None.gif](/Images/OutliningIndicators/None.gif)
104
![None.gif](/Images/OutliningIndicators/None.gif)
105
![None.gif](/Images/OutliningIndicators/None.gif)
106
![None.gif](/Images/OutliningIndicators/None.gif)
107
![None.gif](/Images/OutliningIndicators/None.gif)
108
![None.gif](/Images/OutliningIndicators/None.gif)
109
![None.gif](/Images/OutliningIndicators/None.gif)
110
![None.gif](/Images/OutliningIndicators/None.gif)
111
![None.gif](/Images/OutliningIndicators/None.gif)
112
![None.gif](/Images/OutliningIndicators/None.gif)
113
![None.gif](/Images/OutliningIndicators/None.gif)
114
![None.gif](/Images/OutliningIndicators/None.gif)
115
![None.gif](/Images/OutliningIndicators/None.gif)
116
![None.gif](/Images/OutliningIndicators/None.gif)
117
![None.gif](/Images/OutliningIndicators/None.gif)
118
![None.gif](/Images/OutliningIndicators/None.gif)
119
![None.gif](/Images/OutliningIndicators/None.gif)
120
![None.gif](/Images/OutliningIndicators/None.gif)
121
![None.gif](/Images/OutliningIndicators/None.gif)
122
![None.gif](/Images/OutliningIndicators/None.gif)
123
![None.gif](/Images/OutliningIndicators/None.gif)
124
![None.gif](/Images/OutliningIndicators/None.gif)
125
![None.gif](/Images/OutliningIndicators/None.gif)
126
![None.gif](/Images/OutliningIndicators/None.gif)
127
![None.gif](/Images/OutliningIndicators/None.gif)
128
![None.gif](/Images/OutliningIndicators/None.gif)
129
![None.gif](/Images/OutliningIndicators/None.gif)
130
![None.gif](/Images/OutliningIndicators/None.gif)
131
![None.gif](/Images/OutliningIndicators/None.gif)
132
![None.gif](/Images/OutliningIndicators/None.gif)
133
![None.gif](/Images/OutliningIndicators/None.gif)
134
![None.gif](/Images/OutliningIndicators/None.gif)
135
![None.gif](/Images/OutliningIndicators/None.gif)
136
![None.gif](/Images/OutliningIndicators/None.gif)
137
![None.gif](/Images/OutliningIndicators/None.gif)
138
![None.gif](/Images/OutliningIndicators/None.gif)
139
![None.gif](/Images/OutliningIndicators/None.gif)
140
![None.gif](/Images/OutliningIndicators/None.gif)
141
![None.gif](/Images/OutliningIndicators/None.gif)
142
![None.gif](/Images/OutliningIndicators/None.gif)
143
![None.gif](/Images/OutliningIndicators/None.gif)
144
![None.gif](/Images/OutliningIndicators/None.gif)
145
![None.gif](/Images/OutliningIndicators/None.gif)
146
![None.gif](/Images/OutliningIndicators/None.gif)
147
![None.gif](/Images/OutliningIndicators/None.gif)
148
![None.gif](/Images/OutliningIndicators/None.gif)
149
![None.gif](/Images/OutliningIndicators/None.gif)
150
![None.gif](/Images/OutliningIndicators/None.gif)
151
![None.gif](/Images/OutliningIndicators/None.gif)
152
![None.gif](/Images/OutliningIndicators/None.gif)
153
![None.gif](/Images/OutliningIndicators/None.gif)
154
![None.gif](/Images/OutliningIndicators/None.gif)
155
![None.gif](/Images/OutliningIndicators/None.gif)
156
![None.gif](/Images/OutliningIndicators/None.gif)
157
![None.gif](/Images/OutliningIndicators/None.gif)