2013-04-21 3 views
1

У меня есть экран входа в систему, для которого требуется имя пользователя/пароль.asp.net выполняет проверку подлинности с помощью роли

Я использую таблицы членства и ролей ASP.NET, которые являются частью ASP.NET для хранения информации, когда пользователь первоначально зарегистрировался.

Как только пользователь входит в систему с соответствующей ролью, затем направьте их на другую страницу.

Это файл web.config для этой другой страницы. Обратите внимание, что это позволяет только роль SomeRole.

<configuration> 
    <system.web> 
    <authorization> 
     <allow roles="SomeRole" /> 
     <deny users="*" />     
    </authorization> 
    </system.web> 
    </configuration> 

На экране входа в систему я фиксирую имя пользователя и пароль. Я не уверен, но как сделать роль следующей ролью пользователя.

У меня есть следующий код:

 protected void btnLogin_Click(object sender, EventArgs e) 
     {  
      // not sure what code to put here so user logged in that has a Role of SomeRole works with code just below     
      if (User.IsInRole("SomeRole")) 

Когда я смотрю, чтобы увидеть, роль пользователя проявляющейся как пустая. Мой вопрос заключается в том, как сделать ток, который зарегистрирован в роли SomeRole, так что

<allow roles="SomeRole" />  

будет работать. Обратите внимание, что на экране входа в систему у меня есть имя пользователя и пароль, который принадлежит SomeRole, но не уверен, как сделать

if (User.IsInRole («SomeRole»)) работает так, чтобы наследовать роль этого пользователя. Надеюсь, это имеет смысл.

Вот что моя web.config выглядит следующим образом:

  <roleManager enabled="true" cacheRolesInCookie="true" 
       defaultProvider="SiRoleProvider" 
       createPersistentCookie="false" 
       cookieProtection="All"> 
      <providers> 
      <clear/> 
      <add connectionStringName="SiiSQL1" applicationName="SiGen" name=" r" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
      </providers> 
      </roleManager>  

Благодарности

+0

вы используете CustomRoleProdiders? какой RoleProdider у вас есть в вашем файле конфигурации? –

+0

Здравствуйте, обновлено выше с тем, что у меня есть в файле конфигурации –

+0

Вы назначили/создали роли в своей системе с помощью WAT? или используя код? –

ответ

2

Вы должны установить аутентификации куки для пользователя, потому что вы используете контроль пользовательского входа в систему и для того, чтобы использовать Role.IsInRole

Попробуйте это в своем пользовательском коде кнопки входа. SetAuthCookie фактически набор вошли в систему пользователя, чтобы получить доступ поставщика членства

protected void Login_Click(object sender, EventArgs e) 
{ 

if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text)) 
{ 

FormsAuthentication.SetAuthCookie(txtUserName.Text, true); 

string url = "~/Member/Default.aspx"; 
Response.Redirect(url); 
+0

Отлично - Спасибо. –

+0

@NatePet ... вот что я сказал [в этом посте] (http://stackoverflow.com/questions/16107672/forms-authentication-subfolder-web-config-not-working/16108506#comment23006220_16108506). – MikeSmithDev

Смежные вопросы