2
我想從我們已經通過servicestack的流暢驗證API鉤子鉤住了一個自定義驗證程序中訪問用戶的AuthSession的最佳途徑。基本上,這些要求迫使我們通過該驗證器使用名爲「DocNumberValidator」的類來訪問數據庫。用戶的Id在進行身份驗證時被保存到會話中,我們需要這些信息來完成成功的SQL查詢。如何訪問此會話信息(請參閱下面的....)。 IoC容器沒有引用AuthSession?隔離/訪問設置會話信息,servicestack API
- 我想這個問題是,如何有人通過必要的會話值而進入由SS驗證框架調用的類?
示例代碼:
public class MyValidator : AbstractValidator<Statuses>
{
public IDocNumberValidator DocNumberValidator { get; set; }
public StatusesValidator()
{
RuleFor(s => s.DocNumber)
.Must(docNum => this.DocNumberValidator.Validate(docNum))
.WithMessage("Document Number is invalid.")
.WithErrorCode("S-001");
}
}
public class DocNumberValidator : IDocNumberValidator
{
public IDbConnectionFactory Db { get; set; }
public bool Validate(string docNum)
{
var isFound = false;
this.Db.Run(conn =>
{
var sql = "SELECT COUNT([docNumber]) FROM [TABLE] WHERE [docNumber] = @DocNum AND [UserId] = @UserID";
var cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = sql;
cmd.Parameters.Add(new SqlParameter("@DocNum", docNum));
cmd.Parameters.Add(new SqlParameter("@UserID", ????????)); // how does one get access to saved users session here
int cnt = (int) cmd.ExecuteScalar();
if (cnt == 1)
isFound = true;
});
return isFound;
}
}
有趣,我已經從 緩存獲取AuthUserSession(或任何你正在使用的類型)一直沿着同樣的道路...我會測試這個,並回來與你...感謝輸入paaschpa – darthal 2013-04-24 14:48:43
工程...謝謝... – darthal 2013-04-24 19:18:11