mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
@@ -33,7 +33,9 @@ namespace Orchard.Security.Providers {
|
||||
|
||||
public void SignIn(IUser user, bool createPersistentCookie) {
|
||||
var now = _clock.UtcNow.ToLocalTime();
|
||||
var userData = Convert.ToString(user.Id);
|
||||
|
||||
// the cookie user data is {userId};{tenant}
|
||||
var userData = String.Concat(Convert.ToString(user.Id), ";", _settings.Name);
|
||||
|
||||
var ticket = new FormsAuthenticationTicket(
|
||||
1 /*version*/,
|
||||
@@ -99,9 +101,24 @@ namespace Orchard.Security.Providers {
|
||||
}
|
||||
|
||||
var formsIdentity = (FormsIdentity)httpContext.User.Identity;
|
||||
var userData = formsIdentity.Ticket.UserData;
|
||||
var userData = formsIdentity.Ticket.UserData ?? "";
|
||||
|
||||
// the cookie user data is {userId};{tenant}
|
||||
var userDataSegments = userData.Split(';');
|
||||
|
||||
if (userDataSegments.Length != 2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var userDataId = userDataSegments[0];
|
||||
var userDataTenant = userDataSegments[1];
|
||||
|
||||
if (!String.Equals(userDataTenant, _settings.Name, StringComparison.Ordinal)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
int userId;
|
||||
if (!int.TryParse(userData, out userId)) {
|
||||
if (!int.TryParse(userDataId, out userId)) {
|
||||
Logger.Fatal("User id not a parsable integer");
|
||||
return null;
|
||||
}
|
||||
|
Reference in New Issue
Block a user