TA的每日心情 | 开心 2011-11-24 11:37 |
---|
签到天数: 1 天 [LV.1]初来乍到 鲜花( 3) 鸡蛋( 0)
|
如何登录出现未满18岁无法登陆,请执行下面存储过程即可
- USE [SUNOnline_CH_1204]
- GO
- /****** Object: StoredProcedure [dbo].[S_LoginUser] Script Date: 04/22/2022 16:25:39 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER OFF
- GO
- /********************************************************************************************
- Date: 2006-12-04
- Create: Endless No.1
- Title:
- Project:
- Call:
- Contents:
- EX:
- EXEC dbo.S_LoginUser 'suncbt047',''
- SELECT * FROM dbo.T_UserInfo WHERE UserGuid = 5 BETWEEN 41 AND 52
- EXEC S_LoginUser 'SUNTEST499', '10.101.12.25', 3, 30
- SELECT * FROm dbo.T_User where UserID = 'i4u4me01'
- SELECT * FROM dbo.T_UserInfo
- Output:
- [Result 0=Success, 1=Transaction Error, 2=UserID Error, 3=PersonalNum Length Error]
- ETC:
- -중국 연령계산
- 1.신분증 번호의 자리수가 12자리(신번호) 인지 9자리(구번호)인지를 확인한다
- 2.12자리일경우 왼쪽 1자리부터 순서대로 8개가 생년월일('19770401')이고 9자리일경우 왼쪽 1자리부터 순서대로 6개가 생년월일('770401') 이다
- 3.중국의 연령의 경우 미국의 연령과 동일하게 계산된다.예를 들면 생년월일 1977년 4월 1일이면 2007년 4월 1일이 되면 30세가 된다. 2007년 3월 30일이면 29세
- 4.이를 계산하기 위해 년도 와 월일 을 분리해서 계산해야한다 우선 년도를 DATEDIFF 함수로 연령을 구한후 분리한 '월일'을 현재의 '월일'과 비교하여 현재의 '월일'보다 작을경우 연령에서 -1을 해준다
- Edit History:
- 20070222 매트릭스 카드 번호 추가(김제형)
- 20070502 PASS 의 Alert 정보 리턴(김제형)
- 20070611 실명인증여부(Sts2) 및 연령 계산 추가(김제형)
- 20101004 중국 토큰인증 추가 (문상현)
- *********************************************************************************************/
- ALTER PROCEDURE [dbo].[S_LoginUser]
- @UserID nvarchar(50)
- , @IpAddr char(15)
- , @LimitCount INT = 3
- , @LimitTime INT = 30
- AS
- SET NOCOUNT ON
- -- 인증관련 추가(07-03-27, 담당자)
- -- 비밀번호 연속오류 체크
- DECLARE @ti_AuthFailCount TINYINT -- 실패 횟수
- DECLARE @dt_ExpireAccountBlockTime SMALLDATETIME -- 계정 블록 만료 시간
- SELECT @ti_AuthFailCount = AuthFailCount,
- @dt_ExpireAccountBlockTime = DATEADD(mi, @LimitTime, LastAuthTime)
- FROM dbo.T_User WITH (NOLOCK) WHERE UserID=@UserID
- IF @@ROWCOUNT = 0 -- 계정이 없음
- BEGIN
- RETURN 1
- END
- IF (@ti_AuthFailCount >= @LimitCount) AND (GETDATE() >= @dt_ExpireAccountBlockTime) -- 연속 오류회수가 3회 이상이고 30분이 지났으면 실패횟수 초기화
- BEGIN
- UPDATE dbo.T_User SET AuthFailCount = 0 WHERE UserID = @UserID
- END
- -- 실제 참조는 'AuthFailCount'만 하지만 인증서버에서 호출하는 형식때문에 형식에 맞는 각 필드들을 얻어와야함
- -- 또한 라이브의 경우 계정블록을 하지 않으므로 테섭에서 블록이 되었다 하더라도 라이브에선 통과시켜줘야함
- SELECT
- U.UserGuid
- , PassWD
- , Sts
- , Sts2 --PC방비 미납자 (0=정상, 1=미납자)
- , 1 AS Sts3 --실명인증여부( 0=미실명, 1=실명)
- , CharPassWD
- --Xingbarking(Q:32211234)DevTeam -- Get Age
- , (CASE WHEN LEN(UI.PersonalNum) = 12
- THEN CASE WHEN CONVERT(INT,SUBSTRING(UI.PersonalNum,5,4)) <= CONVERT(INT, SUBSTRING(CONVERT(VARCHAR(10),GETDATE(),112),5,4))
- THEN DATEDIFF(YEAR,CONVERT(SMALLDATETIME,SUBSTRING(UI.PersonalNum,1,8)),GETDATE())
- ELSE DATEDIFF(YEAR,CONVERT(SMALLDATETIME,SUBSTRING(UI.PersonalNum,1,8)),GETDATE()) -1
- END
- WHEN LEN(UI.PersonalNum) = 9
- THEN CASE WHEN CONVERT(INT,SUBSTRING(UI.PersonalNum,3,4)) <= CONVERT(INT, SUBSTRING(CONVERT(VARCHAR(10),GETDATE(),112),5,4))
- THEN DATEDIFF(YEAR,CONVERT(SMALLDATETIME,'19' +SUBSTRING(UI.PersonalNum,1,6)),GETDATE())
- ELSE DATEDIFF(YEAR,CONVERT(SMALLDATETIME,'19' +SUBSTRING(UI.PersonalNum,1,6)),GETDATE()) -1
- END
- ELSE 18 --获得年龄失败默认18岁
- END ) AS Age
- , ISNULL((SELECT TOP 1 CompGuid FROM T_IpConnect (NOLOCK) WHERE IpAddress = @IpAddr), 0) IpGuid
- , ISNULL((SELECT TOP 1 CardNo FROM dbo.T_UserMatrix WHERE UserGuid = U.UserGuid AND ExpireDT >= CONVERT(NVARCHAR(8),GETDATE(),112)),'') CardNo
- , ISNULL((CASE WHEN AL.StartDate <=GETDATE() AND AL.EndDate > GETDATE() THEN CONVERT(TINYINT,1) ELSE CONVERT(TINYINT,0) END),0) AS Alert
- , AuthFailCount
- , ShapeAuthFailCount
- , MatrixAuthFailCount
- -- (시작)20101004 중국 토큰인증 추가 (문상현)
- , TI.is_token_auth
- , RTRIM(TI.base64string)
- -- (끝)20101004 중국 토큰인증 추가 (문상현)
- FROM
- dbo.T_User U
- INNER JOIN
- dbo.T_UserInfo UI
- ON
- U.UserGuid = UI.UserGuid
- LEFT OUTER JOIN
- dbo.T_AlertList AL
- ON
- U.UserGuid = AL.UserGuid
- -- (시작)20101004 중국 토큰인증 추가 (문상현)
- LEFT OUTER JOIN
- dbo.T_TokenInfo_CH TI
- ON
- U.UserGuid = TI.UserGuid
- -- (끝)20101004 중국 토큰인증 추가 (문상현)
- WHERE
- U.UserID = @UserID
-
- IF @@ROWCOUNT = 0
- BEGIN
- RETURN 1
- END
- ELSE
- BEGIN
- UPDATE dbo.T_User SET LastAuthTime = GETDATE() WHERE UserID= @UserID
- RETURN 0
- END
-
- SET NOCOUNT OFF
复制代码
|
鲜花鸡蛋vvvvvv 在2022-4-22 20:31 送朵鲜花 并说:我非常同意你的观点,送朵鲜花鼓励一下
|