我有一个Razor网站,我使用WebMatrix完全登录/注册和管理员角色。并且要求管理员能够“以现有用户身份登录”,以便能够为他登录的特定用户添加,编辑,取消和确认新订单。
我知道这不是解决这个问题的最常见方式,但我已经看到它做了很多。我目前拥有一个域名转售业务,我的供应商使用这种类型的功能,它允许我以用户身份登录他们的帐户ETC ..
所以,我被告知FormsAuthentication在C#中对此有用。所以我查了一下:
http://msdn.microsoft.com/en-us/library/twk5762b.aspx
这让我问:
什么?
和...
“用户名”是指用户注册时创建的电子邮件地址?或者他们是指UserId,这是一个INT?
而且,这样做真的很简单吗?:
@{
if(Roles.IsUserInRole("Administrator"))
{
SetAuthCookie(
"ClientsUserNameHere,
true
);
}
else
{
Response.Redirect("~/Account/SignIn");
}
}
<DOCTYPE! HTML>
<html>
<head></head>
<body>
<p>Hello, Administrator, you are currently Signed In as [insert client name here].</p>
</body>
</html>
答案 0 :(得分:3)
而且,这真的很简单吗?
是的,真的很简单。好吧,实际上要使这个生效,你需要重定向,因为页面将使用仍然指示管理员的请求cookie:
if(Roles.IsUserInRole("Administrator")) {
FormsAuthentication.SetAuthCookie(
"ClientsUserNameHere",
false // <-- set to true only if you want persistent cookies
);
Response.Redirect("~/Home/SomeUserPage");
}
此外,您可以将一些信息存储到会话中,表明这是一个管理员,充当普通用户(如果您需要了解它)而不是普通用户。
您还可以查看following article以获取更高级的模拟方案。